您好,欢迎访问一九零五行业门户网

php中关于AES加密对应Java中的SHA1PRNG方式加密的实例详解

做对接的时候,服务商做的aes加密通过sha1prng算法(只要password一样,每次生成的数组都是一样的,所以可以用来做加密解密的key)进行了又一次加密,搞了好几个小时,直接看对应的代码吧,可以参考一下,只有java的加密源码
private static byte[] encrypt(byte[] bytecontent, byte[] password) throws exception { keygenerator kgen = keygenerator.getinstance("aes"); securerandom securerandom = securerandom.getinstance("sha1prng"); securerandom.setseed(password); kgen.init(128, securerandom); secretkey secretkey = kgen.generatekey(); byte[] encodeformat = secretkey.getencoded(); secretkeyspec key = new secretkeyspec(encodeformat, "aes"); cipher cipher = cipher.getinstance("aes"); cipher.init(1, key); byte[] result = cipher.dofinal(bytecontent); return result; }
private function _pkcs5pad($text, $blocksize) { $pad = $blocksize - (strlen($text) % $blocksize); return $text . str_repeat(chr($pad), $pad); } private function _pkcs5unpad($text) { $end = substr($text, -1); $last = ord($end); $len = strlen($text) - $last; if(substr($text, $len) == str_repeat($end, $last)) { return substr($text, 0, $len); } return false; } public function encrypt($encrypt, $key) { $blocksize = mcrypt_get_block_size(mcrypt_rijndael_128, mcrypt_mode_ecb); $paddeddata = $this->_pkcs5pad($encrypt, $blocksize); $ivsize = mcrypt_get_iv_size(mcrypt_rijndael_128, mcrypt_mode_ecb); $iv = mcrypt_create_iv($ivsize, mcrypt_rand); $key2 = substr(openssl_digest(openssl_digest($key, 'sha1', true), 'sha1', true), 0, 16); $encrypted = mcrypt_encrypt(mcrypt_rijndael_128, $key2, $paddeddata, mcrypt_mode_ecb, $iv); return base64_encode($encrypted); } public function decrypt($decrypt, $key) { $decoded = $this->hex2bin($decrypt); $blocksize = mcrypt_get_iv_size(mcrypt_rijndael_128, mcrypt_mode_ecb); $iv = mcrypt_create_iv($blocksize, mcrypt_rand); $decrypted = mcrypt_decrypt(mcrypt_rijndael_128, $key, $decoded, mcrypt_mode_ecb, $iv); return $this->_pkcs5unpad($decrypted); } function hex2bin($str) { $sbin = ""; $len = strlen($str); for($i = 0; $i < $len; $i += 2) { $sbin .= pack("h*", substr($str, $i, 2)); } return $sbin; }
以上就是php中关于aes加密对应java中的sha1prng方式加密的实例详解的详细内容。
其它类似信息

推荐信息