Triple DES加密 [英] Triple DES encryption
问题描述
请注意,我有这里的问题是关键的尺寸的。首先,基于包含在下面的代码的意见,我想,我的关键需要是24个字节(192位)。这并没有工作,所以我给了16,32,和8个字节键射击 - 似乎没有任何合作。通过不工作我的意思是,经过我的文字已经被加密和解密它不持有相同的值,我的原文
Please note that the issue I am having here is with the key size. At first, based on the comments included in the below code, I figured that my key needed to be 24 bytes (192 bits). This didn't work so I gave 16, 32, and 8 byte keys a shot - nothing seems to be working. By "not working" I mean that after my text has been encrypted and decrypted it does not hold the same value as my original text.
原始文本: 示例测试这应该工作
加密后的文本:¸¹pÕô6
解密文本: 样本
下面是两个函数我我使用(加密/解密功能)。我也包括我怎么打电话各项功能。
Here are the two functions I am using (Encrypt / Decrypt functions). Also I will include how I am calling each function.
// 168-bit (three-key) 3DES (Triple-DES) encrypt a single 8-byte block (ECB mode)
// plain-text should be 8-bytes, key should be 24 bytes.
public byte[] TripleDesEncryptOneBlock(byte[] plainText, byte[] key)
{
// Create a new 3DES key.
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
// Set the KeySize = 192 for 168-bit DES encryption.
// The msb of each byte is a parity bit, so the key length is actually 168 bits.
des.KeySize = 192;
des.Key = key;
des.Mode = CipherMode.ECB;
des.Padding = PaddingMode.None;
ICryptoTransform ic = des.CreateEncryptor();
byte[] enc = ic.TransformFinalBlock(plainText, 0, 8);
return enc;
}
public byte[] TripleDesDecryptBlock(byte[] plainText, byte[] key)
{
// Create a new 3DES key.
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
// Set the KeySize = 192 for 168-bit DES encryption.
// The msb of each byte is a parity bit, so the key length is actually 168 bits.
des.KeySize = 192;
des.Key = key;
des.Mode = CipherMode.ECB;
des.Padding = PaddingMode.None;
ICryptoTransform ic = des.CreateDecryptor();
byte[] dec = ic.TransformFinalBlock(plainText, 0, 8);
return dec;
}
// Encrypt Text
textBox5.Text = ByteToString(TripleDesEncryptOneBlock(StringToByte(textBox5.Text), StringToByte("1 2 3 4 5 6 7 8 9 1 1 2 ")));
// Decrypt Text
textBox5.Text = ByteToString(TripleDesDecryptBlock(StringToByte(textBox5.Text), StringToByte("1 2 3 4 5 6 7 8 9 1 1 2 ")));
感谢您的帮助,
埃文
推荐答案
使用这样的:
字节[] = ENC ic.TransformFinalBlock(明文,0,plainText.Length);
我希望这将加密/解密您的整个字符串。你也不用这种方法多次调用
I hope it will encrypt/decrypt your whole string. Also you will need not to call this method multiple times
这篇关于Triple DES加密的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!