AES加密:PHP與Java互通
提交表單中含大寫字母解密不正確
AES加密:PHP與Java互通
參考網址:https://www.cnblogs.com/libo0125ok/p/7668026.html
//使用openssl_encrypt方法替代mcrypt_encrypt做AES加密
function openssldecrypt($data) {
return openssl_decrypt(base64_decode($data), 'AES-128-ECB', 'abcdefgabcdefg12', OPENSSL_RAW_DATA);
}
function mcryptdecrypt($sStr) {
$decrypted= mcrypt_decrypt(MCRYPT_RIJNDAEL_128,'abcdefgabcdefg12',base64_decode($sStr), MCRYPT_MODE_ECB);
$dec_s = strlen($decrypted);
$padding = ord($decrypted[$dec_s-1]);
$decrypted = substr($decrypted, 0, -$padding);
return $decrypted;
}
提交表單中含大寫字母解密不正確
使用json方式傳數據;
<script>
function jiami(){
var account = encrypt($("#account").val());
var password = encrypt($("#password").val());
var backurl = $("#backurl").val();
var formjson={
account:account,
password:password,
backurl:backurl
};
$.ajax({
url: '<{:U("test/save")}>',
data: {
"formjson" : formjson
},
type: 'post',
success: function (data) {
$("#baocms_frm")[0].contentWindow.document.write(data)
}
});
}
/**
* 加密(需要先加載lib/aes/aes.min.js文件)
* @param word
* @returns {*}
*/
function encrypt(word){
var key = CryptoJS.enc.Utf8.parse("abcdefgabcdefg12");
var srcs = CryptoJS.enc.Utf8.parse(word);
var encrypted = CryptoJS.AES.encrypt(srcs, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});
return encrypted.toString();
}
/**
* 解密
* @param word
* @returns {*}
*/
function decrypt(word){
var key = CryptoJS.enc.Utf8.parse("abcdefgabcdefg12");
var decrypt = CryptoJS.AES.decrypt(word, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});
return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}
</script>
public function save() {
$formjson = $_POST['formjson'];
$account = htmlspecialchars($formjson['account']);
$password = htmlspecialchars( $formjson['password']);
$decryptedaccount = openssldecrypt($account);
$decryptedpassword = openssldecrypt($password);
echo $decryptedaccount;
echo $decryptedpassword;
}