var plaintText = 'aaaaaaaaaaaaaaaa'// 明文
var keyStr = 'bbbbbbbbbbbbbbbb'// 一般key为一个字符串
参看官网文档,AES方法是支持AES-128、AES-192和AES-256的,加密过程中使用哪种加密方式取决于传入key的类型,否则就会按照AES-256的方式加密。
CryptoJS supports AES-128, AES-192, and AES-256. It will pick the variant by the size of the key you pass in. If you use a passphrase, then it will generate a 256-bit key.
由于Java就是按照128bit给的,但是由于是一个字符串,需要先在前端将其转为128bit的才行。
<script>var key_hash = CryptoJS.MD5("Message")
var key = CryptoJS.enc.Utf8.parse(key_hash)
var iv = CryptoJS.enc.Utf8.parse('1234567812345678')
var encrypted = CryptoJS.AES.encrypt("Message", key, { iv: iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding})
document.write("encode:"+encrypted)
</script>
php代码:
<?php
$text = "Message"
$key = md5($text) //key的长度必须16,32位,这里直接MD5一个长度为32位的key
$iv='1234567812345678'
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv)
$decode = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $crypttext, MCRYPT_MODE_CBC, $iv)
echo base64_encode($crypttext)
echo "<br/>"
echo $decode
echo "<br/>"
?>