PHP和C#中的DES加密我想在PHP中使用与C#代码中相同的DES编码。C#代码如下所示:publicstaticstringEncriptarCadena(stringstrEncriptar){DESCryptoServiceProviderprovider;MemoryStream流;CryptoStream流2;字符串str2;字符串str="29393651";byte[]buffer2=newbyte[]{0x45,50,0xa5,0x18,0x67,0x58,0xac,0xba};byte[]bytes=newbyte[0];尝试{bytes=Encoding.UTF8.GetBytes(str.Substring(0,8));provider=newDESCryptoServiceProvider();byte[]buffer=Encoding.UTF8.GetBytes(strEncriptar);流=新的内存流();stream2=newCryptoStream(stream,provider.CreateEncryptor(bytes,buffer2),CryptoStreamMode.Write);stream2.Write(缓冲区,0,缓冲区。长度);stream2.FlushFinalBlock();str2=Convert.ToBase64String(stream.ToArray());}赶上(异常){str2="";}最后{provider=null;流=空;流2=空;}返回str2;}我在PHP中完成的代码如下:functionencrypt($string){//Key$key="29393651";$ivArray=array(0x45,50,0xa5,0x18,0x67,0x58,0xac,0xba);$iv=空;foreach($ivArray作为$element)$iv.=CHR($element);echo"Key:$keyIV:$iv";$encrypted_string=mcrypt_encrypt(MCRYPT_DES,$key,$string,MCRYPT_MODE_CBC,$iv);返回base64_encode($encrypted_string);但我找不到问题,因为他们不会为相同的输入给出相同的结果非常欢迎任何帮助:)检查你的填充。默认情况下,PHP使用二进制NULLx00填充要加密的数据,这绝对不是.NET中的默认填充模式(它们很可能默认使用PKCS7填充)。非常感谢。帮我解决同样的问题。此处为PKCS7填充:Howtoadd/removePKCS7paddingfromanAESencryptedstring?只需将ecb更改为cbc下面是我正在使用的一个简短快照:以上是C#LearningTutorial:DESEncryptioninPHPandC#分享的内容,如果它对任何人有用并且需要了解更多关于C#LearningTutorial,我希望你会更加关注它——$key="29393651";$iv=$键;$pass_enc=$我的密码;$block=mcrypt_get_block_size('des','cbc');$pad=$block-(strlen($pass_enc)%$block);$pass_enc.=str_repeat(chr($pad),$pad);$pass_enc=mcrypt_encrypt(MCRYPT_DES,$key,$pass_enc,MCRYPT_MODE_CBC,$iv);$pass_enc=base64_encode($pass_enc);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
