경로 변환 과 문자열 암호 화
encodeURI 와 decodeURI
encodeURIComponent 와 decodeURIComponent
이 두 조 의 방법 은 모두 경로 에 대해 코드 처 리 를 하고 그들의 작은 차 이 를 파악 하 며 서로 다른 수요 에 직면 할 때 합 리 적 으로 취사선택 할 수 있다.
encodeURI('http://jb51.net/my test.asp/ ?name=stle&car=saab')
위 코드 의 변환 결과:http://jb51.net/my%20test.asp/%E4%B8%AD%E6%96%87%E8%AF%8D%E7%BB%84?name=stle&car=saab
대응 하 는 decodeURI 는 encodeURI 가 인 코딩 된 결 과 를 복원 하 는 데 사 용 됩 니 다.사용 방법 은 encodeURI 와 같 습 니 다.
encodeURIComponent('http://jb51.net/my test.asp/ ?name=stle&car=saab')
위 코드 의 변환 결과:http%3A%2F%2Fjb51.net%2Fmy%20test.asp%2F%E4%B8%AD%E6%96%87%E8%AF%8D%E7%BB%84%3Fname%3Dstle%26car%3Dsaab
대응 하 는 decodeURIComponent 는 encodeURIComponent 의 디 코딩 결 과 를 복원 하 는 데 사 용 됩 니 다.사용 방법 은 encodeURIComponent 와 같 습 니 다.
두 가지 방식 의 디 코딩 결 과 를 비교 하면 차이 점 을 발견 하기 어렵 지 않 습 니 다.encodeURIComponent 는 encodeURI 디 코딩 보다 더욱 철저 하고 encodeURIComponent 는 문자열 에 있 는 보존 문자 도 디 코딩 합 니 다.URI 의 각 부분 을 분할 하 는 데 사용 할 문 자 를 유지 합 니 다.이 문자 들 은";"|"/"|"?"|":"|"@"|"&"|"="|"+"|"$"|","
문자열 의 암호 화 와 복호화
1.base 64 암호 화 및 복호화 현재 원생 js 지원 base 64(IE 10,주류 브 라 우 저)사용 방법 도 window.btoa(decodeData)복호화 window.atob(encodeData)를 간단하게 암호 화 합 니 다.
암호 화 된 내용 에 중국어 문자 가 포함 되 어 있 으 면 먼저 코드 를 바 꿔 야 합 니 다.
암호 화
window.btoa(encodeURIComponent(' '))
복호화decodeURIComponent(window.atob('JUU0JUI4JUFEJUU2JTk2JTg3JUU4JUFGJThEJUU3JUJCJTg0'))
2.md5 암호 화 md5 암호 화 알고리즘 은 암호 해시 함수 알고리즘 을 사용 하여 근본 적 인 의미 에서 md5 는 암호 화 만 할 수 있 고 복호화 할 수 없습니다.복호화 가 지원 되 지 않 는 이 유 는 10 을 3 으로 나 누 면 나머지 가 1 이 고 4 를 3 으로 나 누 면 나머지 가 1 인 것 과 비슷 하지만 나머지 가 1 인 것 은 이 숫자 가 무엇 인지 모른다.복호화 후 문자열 에 1 이 나 왔 을 때 원래 대응 하 는 숫자 가 얼마 인지 알 수 없습니다.그러나 같은 문자열 은 암호 화 된 후에 결과 가 유일 할 것 입 니 다.그래서 md5 암호 화 는 암호 화 에 자주 사 용 됩 니 다.로그 인 암 호 를 md5 로 암호 화한 후 데이터 베 이 스 는 유일 하 게 암호 화 된 문자열 로 저 장 됩 니 다.전단 로그 인 은 암 호 를 입력 해 야 합 니 다.MD5 를 통 해 암호 화 된 후(같은 문자열 은 암호 화 된 후에 결과 가 반드시 유일 합 니 다)데이터베이스 에 저 장 된 md5 문자열 과 비교 해 야 합 니 다.MD5 암호 화 특성 상 복호화 가 이 뤄 지지 않 아 비밀 번 호 를 잊 어 버 렸 을 때 비밀 번 호 를 되 찾 는 대신 암 호 를 리 셋 할 수 밖 에 없습니다.
<script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.js"></script>
<script>
md5('fgdsagjufg')
<script>
MD5js 를 참조 하 는 것 외 에 MD5.js 플러그 인 을 다운로드 할 수 있 습 니 다.
현재 인터넷 에는 md5 온라인 암호 화 및 복호화 도구 가 많이 존재 합 니 다.암호 화 된 MD5 문자열 을 저장 할 뿐 복잡 한 문자열 이나 나타 나 지 않 은 문자열 은 복호화 할 수 없습니다.
3.sha 1 암호 화 는 MD5 와 유사 하여 암호 화 만 복호화 할 수 없고 해시 알고리즘 을 사용 합 니 다.
<script type="text/ecmascript" src="sha1.js"></script>
var sha = hex_sha1('mima123465');
console.log(sha);
sha1js 를 참조 하 는 것 외 에 도 sha1.js 플러그 인 을 다운로드 할 수 있 습 니 다.
4.RSA 공개 키 암호 화 비밀 키 복호화 관련 프로필 먼저 도입
<script src="js/jsencrypt.js"></script>
프론트 엔 드 가 백 엔 드 에 로그 인 요청 을 하기 전에 백 엔 드 에 공개 키 를 가 져 오 는 방법 을 요청 합 니 다.
var publicKey = null;
$.ajax({
url: "xxx",
type: "post",
dataType: "text",
success: function(data) {
var encrypt = new JSEncrypt();
if(data){
publicKey = data;
};
}
});
공개 키 를 통 해 사용자 이름과 비밀 번 호 를 암호 화 합 니 다.
encrypt.setPublicKey(publicKey);
var username;
var password;
username = encrypt.encrypt(vm.username.trim());
password = encrypt.encrypt(vm.password.trim());
다음은 암호 화 된 사용자 이름 암호 로 배경 을 요청 하 는 것 입 니 다.사용자 이름 암호 전송 시 문자열 연결 방식 으로 전송 하지 마 십시오.
$.ajax({
type: "POST",
url: "xxxxxx",
data: {
"username":username,
"password":password,
},
dataType: "json",
success: function (result) {
if (result.code == 0) {
//
parent.location.href = 'index.html';
} else {
vm.error = true;
vm.errorMsg = result.msg;
vm.refreshCode();
}
}
});
5.ASE 암호 화 및 복호화 github 주소https://github.com/brix/crypto-js
브 라 우 저 엔 드 암호 화
import CryptoJS from 'crypto-js';
const AES_KEY = "qq3217834abcdefg"; //16
const AES_IV = "1234567890123456"; //16
function aes_encrypt(plainText) {
var encrypted = CryptoJS.AES.encrypt(plainText, CryptoJS.enc.Utf8.parse(AES_KEY), {
iv: CryptoJS.enc.Utf8.parse(AES_IV)});
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}
data = 'my message';
encrypt_data = aes_encrypt(data);
console.log(encrypt_data);
node 서버 쪽 복호화
function aes_decrypt(ciphertext) {
var decrypted = CryptoJS.AES.decrypt(ciphertext, CryptoJS.enc.Utf8.parse(AES_KEY), {
iv: CryptoJS.enc.Utf8.parse(AES_IV)});
return decrypted.toString(CryptoJS.enc.Utf8);
}
const encrypt_data = ctx.cookie('data');
cibst decrypt_data = aes_decrypt(encrypt_data);
console.log(decrypt_data);
ASE 의 안전성 은 ASE 암호 화 와 복호화 과정 에서 앞 뒤 가 모두 통 일 된 key 와 iv 로 처리 되 기 때문에 key 와 iv 는 모두 전단 에 노출 되 고 안전성 은 RSA 공개 키 암호 화 비밀 키 복호화 방식 보다 못 합 니 다.