java中3des cbc_C# 3Des两种加密方式 (对应java中的desede/CBC/PKCS5Padding加密)

//3DES的cbc加密[24位密钥对应192位加密]

public static string TripleDesEncryptorCBC(string text, string key, stringiv)

{var tripleDESCipher = newTripleDESCryptoServiceProvider();

tripleDESCipher.Mode=CipherMode.CBC;

tripleDESCipher.Padding=PaddingMode.PKCS7;byte[] pwdBytes =System.Text.Encoding.UTF8.GetBytes(key);byte[] keyBytes = new byte[24];int len =pwdBytes.Length;if (len >keyBytes.Length)

len=keyBytes.Length;

System.Array.Copy(pwdBytes, keyBytes, len);

tripleDESCipher.Key=keyBytes;

tripleDESCipher.IV=Encoding.ASCII.GetBytes(iv);

ICryptoTransform transform=tripleDESCipher.CreateEncryptor();byte[] plainText =Encoding.UTF8.GetBytes(text);byte[] cipherBytes = transform.TransformFinalBlock(plainText, 0, plainText.Length);returnConvert.ToBase64String(cipherBytes);

}//3DES的cbc解密

public static string TripleDesDecryptorCBC(string text, string key, stringiv)

{var tripleDESCipher = newTripleDESCryptoServiceProvider();

tripleDESCipher.Mode=CipherMode.CBC;

tripleDESCipher.Padding=PaddingMode.PKCS7;byte[] encryptedData =Convert.FromBase64String(text);byte[] pwdBytes =System.Text.Encoding.UTF8.GetBytes(key);byte[] keyBytes = new byte[24];byte[] ivBytes =Encoding.ASCII.GetBytes(iv);int len =pwdBytes.Length;if (len >keyBytes.Length)

len=keyBytes.Length;

System.Array.Copy(pwdBytes, keyBytes, len);

tripleDESCipher.Key=keyBytes;

tripleDESCipher.IV=ivBytes;

ICryptoTransform transform=tripleDESCipher.CreateDecryptor();byte[] plainText = transform.TransformFinalBlock(encryptedData, 0, encryptedData.Length);returnEncoding.UTF8.GetString(plainText);

}//加密

public string DESEncrypt(string paymentCode, string key, stringiv)

{

SymmetricAlgorithm symmetric;

ICryptoTransform iCrypto;

MemoryStream memory;

CryptoStream crypto;byte[] byt;

symmetric= newTripleDESCryptoServiceProvider();

symmetric.Key=Encoding.UTF8.GetBytes(key);

symmetric.IV=Encoding.UTF8.GetBytes(iv);

iCrypto=symmetric.CreateEncryptor();

byt=Encoding.UTF8.GetBytes(paymentCode);

memory= newMemoryStream();

crypto= newCryptoStream(memory, iCrypto, CryptoStreamMode.Write);

crypto.Write(byt,0, byt.Length);

crypto.FlushFinalBlock();

crypto.Close();returnConvert.ToBase64String(memory.ToArray());

}//解密

public static string DESDecrypst(string data, string key, stringiv)

{

SymmetricAlgorithm mCSP= newTripleDESCryptoServiceProvider();

mCSP.Key=Encoding.UTF8.GetBytes(key);

mCSP.IV=Encoding.UTF8.GetBytes(iv);

ICryptoTransform iCrypto;

MemoryStream memory;

CryptoStream crypto;byte[] byt;

iCrypto=mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);

byt=Convert.FromBase64String(data);

memory= newMemoryStream();

crypto= newCryptoStream(memory, iCrypto, CryptoStreamMode.Write);

crypto.Write(byt,0, byt.Length);

crypto.FlushFinalBlock();

crypto.Close();returnEncoding.UTF8.GetString(memory.ToArray());

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值