如何在PHP中解密用C#中的3DES加密的字符串?
我正在使用下面的代码对我的C#程序中的字符串进行解码,但我还需要能够使用PHP对相同的字符串服务器端进行解密。PHP中是否有以下c#代码的等价物如何在PHP中解密用C#中的3DES加密的字符串?,c#,php,encryption,C#,Php,Encryption,我正在使用下面的代码对我的C#程序中的字符串进行解码,但我还需要能够使用PHP对相同的字符串服务器端进行解密。PHP中是否有以下c#代码的等价物 要在PHP中获取MD5哈希,请使用。第二个参数提供原始输出,而不是十六进制编码 要使用三重DES加密/解密,可以使用模块。以最简单的形式: $ciphertext = mcrypt_encrypt(MCRYPT_3DES, $key, $data, MCRYPT_MODE_CBC); 考虑事项: 三重DES使用192位密钥,但您有128位密钥。PH
要在PHP中获取MD5哈希,请使用。第二个参数提供原始输出,而不是十六进制编码 要使用三重DES加密/解密,可以使用模块。以最简单的形式:
$ciphertext = mcrypt_encrypt(MCRYPT_3DES, $key, $data, MCRYPT_MODE_CBC);
考虑事项:
- 三重DES使用192位密钥,但您有128位密钥。PHP用null填充键,但是.NET不允许这样的键。相反,它将前8个字节追加到末尾
- .NET使用PCKS7填充,PHP使用零填充
函数encryptNET3DES($key、$vector、$text){
$td=mcrypt_模块_打开(mcrypt_3DES',mcrypt_模式_CBC',);
//完成钥匙
$key_add=24-斯特伦($key);
$key.=substr($key,0,$key\u add);
//填充文本
$text_add=strlen($text)%8;
对于($i=$text\u add;$i我想将.net
中的代码解密为php
。
我的.net
加密和解密方法如下:
public class EncryptDecrypt
{
private byte[] TDES_Key = { 0x01, 0x04, 0x01, 0x01, 0x01, 0x09, 0x07, 0x08, 0x01, 0x09, 0x07, 0x08, 0x01, 0x01, 0x02, 0x04 };
private byte[] tdesIV;
public string Encrypt(string textToEncrypt,string KeyVI)
{
tdesIV = GetLegalKey(KeyVI);
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Key = TDES_Key;
tdes.IV = tdesIV;
byte[] buffer = Encoding.ASCII.GetBytes(textToEncrypt);
return Convert.ToBase64String(tdes.CreateEncryptor().TransformFinalBlock(buffer, 0, buffer.Length));///
}
查看mcrypt
模块()。以防有人需要它。
function encryptNET3DES($key, $vector, $text){
$td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_CBC, '');
// Complete the key
$key_add = 24 - strlen($key);
$key .= substr($key, 0, $key_add);
// Padding the text
$text_add = strlen($text)%8;
for ($i=$text_add; $i<8; $i++){
$text .= chr(8-$text_add);
}
mcrypt_generic_init($td, $key, $vector);
$encrypt64 = mcrypt_generic($td, $text);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
// Return the encrypt text in 64 bits code
return $encrypt64;
}
public class EncryptDecrypt
{
private byte[] TDES_Key = { 0x01, 0x04, 0x01, 0x01, 0x01, 0x09, 0x07, 0x08, 0x01, 0x09, 0x07, 0x08, 0x01, 0x01, 0x02, 0x04 };
private byte[] tdesIV;
public string Encrypt(string textToEncrypt,string KeyVI)
{
tdesIV = GetLegalKey(KeyVI);
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Key = TDES_Key;
tdes.IV = tdesIV;
byte[] buffer = Encoding.ASCII.GetBytes(textToEncrypt);
return Convert.ToBase64String(tdes.CreateEncryptor().TransformFinalBlock(buffer, 0, buffer.Length));///
}