博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DES可逆加解密
阅读量:6800 次
发布时间:2019-06-26

本文共 1899 字,大约阅读时间需要 6 分钟。

方法:

//
DES默认密钥向量
private static byte[]
 Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
///
 
<summary>
///
 DES加密字符串
///
 
</summary>
///
 
<param name="encryptString">
待加密的字符串
</param>
///
 
<param name="encryptKey">
加密密钥,要求为8位
</param>
///
 
<returns>
加密成功返回加密后的字符串,失败返回源串
</returns>
public 
static 
string EncryptDES(
string encryptString, 
string encryptKey)
{
    
try
    {
        
byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(
0
8));
        
byte[] rgbIV = Keys;
        
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
        DESCryptoServiceProvider dCSP = 
new DESCryptoServiceProvider();
        MemoryStream mStream = 
new MemoryStream();
        CryptoStream cStream = 
new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
        cStream.Write(inputByteArray, 
0, inputByteArray.Length);
        cStream.FlushFinalBlock();
        
return Convert.ToBase64String(mStream.ToArray());
    }
    
catch
    {
        
return encryptString;
    }
}
///
 
<summary>
///
 DES解密字符串
///
 
</summary>
///
 
<param name="decryptString">
待解密的字符串
</param>
///
 
<param name="decryptKey">
解密密钥,要求为8位,和加密密钥相同
</param>
///
 
<returns>
解密成功返回解密后的字符串,失败返源串
</returns>
public 
static 
string DecryptDES(
string decryptString, 
string decryptKey)
{
    
try
    {
        
byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
        
byte[] rgbIV = Keys;
        
byte[] inputByteArray = Convert.FromBase64String(decryptString);
        DESCryptoServiceProvider DCSP = 
new DESCryptoServiceProvider();
        MemoryStream mStream = 
new MemoryStream();
        CryptoStream cStream = 
new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
        cStream.Write(inputByteArray, 
0, inputByteArray.Length);
        cStream.FlushFinalBlock();
        
return Encoding.UTF8.GetString(mStream.ToArray());
    }
    
catch
    {
        
return decryptString;
    }
}

示例:

string strEncrypt = Common.EncryptDES(
"
HelloWord
"
"
PengShou
");  
//
加密后:4BmYCZV+CyJBRcUI0LxWng==
string strDecrypt = Common.DecryptDES(strEncrypt, 
"
PengShou
");   
//
解密后:HelloWord

 

转载地址:http://nfuwl.baihongyu.com/

你可能感兴趣的文章
[Dubbo实战]dubbo + zookeeper + spring 实战 (转)
查看>>
mysql学习笔记(二)
查看>>
Minor【 PHP框架】1.简介
查看>>
面试1
查看>>
【Java基础】4、java中的内部类
查看>>
Mac ssh
查看>>
h5 喜帖
查看>>
全局修改默认字体,通过反射也能做到
查看>>
直方图
查看>>
LeetCode: 【L4】N-Queens 解题报告
查看>>
首届HTML5原创游戏大赛将于6月10日拉开序幕
查看>>
8个对于Web设计和开发人员非常有用的在线工具
查看>>
iOS - (简单平移动画/弹出View的使用)
查看>>
Bloom Filter概念和原理
查看>>
SPOJ PGCD 4491. Primes in GCD Table && BZOJ 2820 YY的GCD (莫比乌斯反演)
查看>>
STL学习系列八:Set和multiset容器
查看>>
入门案例
查看>>
C++ 虚函数表解析(转)
查看>>
八数码问题及A*算法
查看>>
iOS:解决动画加阴影卡的问题
查看>>