脚本宝典收集整理的这篇文章主要介绍了用PHP替换JAVA以进行PKCS5加密,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
cipherAlgorythm = "PBEWIThMD5AndDES"; cipherTransformation = "PBEWithMD5AndDES/CBC/PKCS5Padding"; PBEParameterSPEc ps = new javax.crypto.spec.PBEParameterSpec(salt,iterations); SecretKeyFactory kf = SecretKeyFactory.getInstance(cipherAlgorythm); SecretKey key = kf.generateSecret(new javax.crypto.spec.PBEKeySpec(password.tocharArray())); Cipher encryptCipher = Cipher.getInstance(cipherTransformation); encryptCipher.init(Cipher.ENCRYPT_MODE,key,ps); byte[] output = encryptCipher.doFinal("This is a test string".getBytes("UTF-8"));
似乎是Java的胆量
在PHP我正在做
$hashed_key = pbkdf2('md5',$this->key,$this->salt,$this->reps,<GUESS 1>,TRUE); $output = mcrypt_encrypt(MCRYPT_DES,$hashed_key,"This is a test string",MCRYPT_MODE_CBC,<GUESS 2>);
所以< GUESS 1>是关键尺寸和< GUESS 2>是IV.我玩过这些无济于事.有没有人对这些价值观有所建议?据我所知,加密本身应该是可移植的,但我不确定某些Java方法会发生什么.
看起来java正在某处创建一个IV,但我不明白如何或在哪里.
有关
function pkcs5_pad ($text,$blocksize) { $pad = $blocksize - (strlen($text) % $blocksize); return $text . str_repeat(chr($pad),$pad); }
这可能是您最好的选择,但如果您查看此评论,他关于如何验证每个步骤是否正确的建议可能对您有用.
https://stackoverflow.com/a/10201034/67566
理想情况下,你应该远离DES,因为这个填充将成为PHP中的一个问题,为什么不看看你是否可以将加密算法更改为更麻烦和更安全的东西?
为了帮助您显示此页面:http://www.ietf.org/rfc/rfc4772.txt,其中简明扼要地表示DES易受暴力攻击,因此已被弃用并替换为AES.
以上是脚本宝典为你收集整理的用PHP替换JAVA以进行PKCS5加密全部内容,希望文章能够帮你解决用PHP替换JAVA以进行PKCS5加密所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。