目次
フロントエンドとバックエンドのデータを送信する際には、多くの場合、個人データ (ユーザー名やパスワードなど) の送信が伴いますが、その際、個人データの暗号化と復号化が必要になります。
1. フロントエンド暗号化とバックエンド復号化
1.1 フロントエンドの jQuery 実装
<script src="js/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
var data = "您好+";
while (data.indexOf("+") > -1) {
data = data.replace("+", "%2B");
}
data = btoa(encodeURI(data));
console.log("编码后" + data); //编码后JUU2JTgyJUE4JUU1JUE1JUJEJTI1MkI=
$.post("/test/testPost", {"data":data},function (data) {
})
})
</script>
1.2 バックエンド
@PostMapping("/testPost")
@ResponseBody
public int testPost(String data) throws UnsupportedEncodingException {
System.out.println("解码前" + data); //解码前JUU2JTgyJUE4JUU1JUE1JUJEJTI1MkI=
//1.开始解码
Base64 base64 = new Base64();
String decode = URLDecoder.decode(new String(base64.decode(data), "utf-8"), "utf-8");
System.out.println("解码后" + decode); //解码后您好%2B
//2.将%2B换回+
String decodeVo = decode.replace("%2B","+");
System.out.println("完全解码" + decodeVo); //完全解码您好+
return 1;
}
2. バックエンド暗号化とフロントエンド復号化
2.1 バックエンドの暗号化
@GetMapping("/testGet")
@ResponseBody
public String testGet(){
String data = "您好+";
data = Base64.encodeBase64String(data.getBytes(StandardCharsets.UTF_8));
System.out.println("编码后" + data); //编码后5oKo5aW9Kw==
return data;
}
2.2 フロントエンドの復号化 (Base64.js の導入が必要)
抽出コード:cccc
$.get("/test/testGet",{},function (result) {
console.log("解码前" + result); //解码前5oKo5aW9Kw==
result = Base64.decode(result);
console.log("解码后" + result); //解码后您好+
});