C# 使用3DES EDE/ECB/NOP加密
我收到了一个任务,通过使用令牌和密钥对XML字符串进行加密和解密。 加密应使用C# 使用3DES EDE/ECB/NOP加密,c#,php,encryption,3des,C#,Php,Encryption,3des,我收到了一个任务,通过使用令牌和密钥对XML字符串进行加密和解密。 加密应使用3DES-EDE/ECB/NOPadding,可以在PHP或c35; 我对此没有太多准备,因此我阅读了一些理论,并得出了一个非常简单的实现方法,如下所示: public string Encrypt( string message, string key, string token ) { byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes( message )
3DES-EDE/ECB/NOPadding
,可以在PHP
或c35;
我对此没有太多准备,因此我阅读了一些理论,并得出了一个非常简单的实现方法,如下所示:
public string Encrypt( string message, string key, string token ) {
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes( message );
byte[] keyArray = CreateHash( key );
byte[] vectorArray = CreateHash( token );
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
//set the secret key for the tripleDES algorithm
tdes.Key = keyArray;
//mode of operation. there are other 4 modes. We choose ECB(Electronic code Book)
tdes.Mode = CipherMode.ECB;
//padding mode(if any extra byte added)
tdes.Padding = PaddingMode.None;
ICryptoTransform cTransform = tdes.CreateEncryptor(keyArray, vectorArray);
//transform the specified region of bytes array to resultArray
byte[] resultArray = cTransform.TransformFinalBlock( toEncryptArray, 0, toEncryptArray.Length );
//Release resources held by TripleDes Encryptor
tdes.Clear();
//Return the encrypted data into unreadable string format
return Convert.ToBase64String( resultArray, 0, resultArray.Length );
}
private byte[] CreateHash( string toHash ) {
//use get hashcode regards to your key
MD5CryptoServiceProvider hashKey = new MD5CryptoServiceProvider();
byte[] kArray = hashKey.ComputeHash( UTF8Encoding.UTF8.GetBytes( toHash ) );
//Always release the resources and flush data
//of the Cryptographic service provide. Best Practice
hashKey.Clear();
return kArray;
}
然而,我认为这并不完全正确。事实上,我不确定代币是否应该这样使用。
有人能提供更多的信息,并为我指出如何解决这个问题的正确方向吗
谢谢您可以将令牌与密钥一起用作TripleDESCryptoServiceProvider上的向量
ICryptoTransform cTransform = tdes.CreateEncryptor(key, token);
谢谢你的回答。我已经通过添加令牌的新哈希来编辑代码,并按照您的建议使用。你是那个意思吗?是的,我是那个意思:)这个“代币”到底是什么?它是用来干什么的?@GregS:代币是一个10个字符长的文本字符串。任务要求使用密钥和令牌,使用
3DES/ECB/NOPadding
加密消息。键是类似“1234567890012345678901234”(24个字符)的字符串