java c 3des_C语言的3des、java的3des、C#的3des。三种加密遇到的问题 | 学步园

这个代码片段展示了如何使用TripleDES算法进行加密和解密操作。它设置了ECB模式,Zeros填充,并使用ASCII编码的密钥。加密过程中,将字符串转换为字节数组并进行加密,然后将加密后的字节转换为十六进制字符串。解密时,从十六进制字符串中还原字节数组,并进行解密操作。
摘要由CSDN通过智能技术生成

public static string TripleDESEncrypt(string pToEncrypt, string sKey)

{

try

{

TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();

des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);

des.IV = new Byte[] {0, 00, 00, 00, 00, 00, 00, 00, };// ASCIIEncoding.ASCII.GetBytes(sKey.Substring(0, 8));

des.Mode = CipherMode.ECB;

des.Padding = PaddingMode.Zeros;

MemoryStream ms = new MemoryStream();

CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);

byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);

cs.Write(inputByteArray, 0, inputByteArray.Length);

cs.FlushFinalBlock();;

StringBuilder ret = new StringBuilder();

foreach (byte b in ms.ToArray())

{

ret.AppendFormat("{0:X2}", b);

}

ret.ToString();

return ret.ToString();

}

catch (Exception ex)

{

return ex.Message;

}

}

///DES解密

public static string TripleDESDecrypt(string pToDecrypt, string sKey)

{

TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();

des.Mode = CipherMode.ECB;

des.Padding = PaddingMode.Zeros;

byte[] inputByteArray = new byte[pToDecrypt.Length / 2];

for (int x = 0; x < pToDecrypt.Length / 2; x++)

{

int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));

inputByteArray[x] = (byte)i;

}

des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);

des.IV = new Byte[] { 0, 00, 00, 00, 00, 00, 00, 00, };

MemoryStream ms = new MemoryStream();

CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);

cs.Write(inputByteArray, 0, inputByteArray.Length);

cs.FlushFinalBlock();

StringBuilder ret = new StringBuilder();

return System.Text.Encoding.Default.GetString(ms.ToArray());

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值