C#字符串使用密钥进行加解密
作者:lijiao 发布时间:2023-12-27 19:10:17
标签:C#,字符串,密钥,加密,解密
第一个为大家分享的是C#字符串使用密钥进行加解密代码,具体内容如下
public class DesEncrypt
{
/// <summary>
/// 算法偏移量
/// </summary>
const string m_IV = "12345678";
/// <summary>
/// 功能描述:根据输入的密钥生成8位密钥
/// 作者: 爱给模板网 2gei.cn
/// 创建日期:2015-07-20 17:25:26
/// </summary>
/// <param name="strkey">strkey</param>
/// <returns>8位密钥</returns>
private static string GetKey(string strkey)
{
if (string.IsNullOrEmpty(strkey))
{
strkey = "InfoColl";
}
if (strkey.Length % 8 == 0)
{
return strkey;
}
else
{
return GetKey(strkey + "0");
}
}
/// <summary>
/// 功能描述:加密字符串
/// 作者: 爱给模板网 2gei.cn
/// 创建日期:2015-07-20 17:18:31
/// 任务编号:
/// </summary>
/// <param name="strSourceString">原字符串</param>
/// <param name="strKey">密钥</param>
/// <returns>加密后的字符串</returns>
public static string Encrypt(string strSourceString, string strKey)
{
strKey = GetKey(strKey);
byte[] btKey = Encoding.UTF8.GetBytes(strKey);
byte[] btIV = Encoding.UTF8.GetBytes(m_IV);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
using (MemoryStream ms = new MemoryStream())
{
try
{
byte[] inData = Encoding.UTF8.GetBytes(strSourceString);
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(btKey, btIV), CryptoStreamMode.Write))
{
cs.Write(inData, 0, inData.Length);
cs.FlushFinalBlock();
}
return Convert.ToBase64String(ms.ToArray());
}
catch
{
return strSourceString;
}
}
}
/// <summary>
/// 功能描述:解密字符串
/// 作者: 爱给模板网 2gei.cn
/// 创建日期:2015-07-20 17:18:49
/// 任务编号:
/// </summary>
/// <param name="strEncryptedString">原字符串</param>
/// <param name="strKey">密钥</param>
/// <returns>解密后的字符串</returns>
public static string Decrypt(string strEncryptedString, string strKey)
{
strKey = GetKey(strKey);
byte[] btKey = Encoding.UTF8.GetBytes(strKey);
byte[] btIV = Encoding.UTF8.GetBytes(m_IV);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
using (MemoryStream ms = new MemoryStream())
{
try
{
byte[] inData = Convert.FromBase64String(strEncryptedString);
using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(btKey, btIV), CryptoStreamMode.Write))
{
cs.Write(inData, 0, inData.Length);
cs.FlushFinalBlock();
}
return Encoding.UTF8.GetString(ms.ToArray());
}
catch
{
return strEncryptedString;
}
}
}
}
C#字符串加密和解密
using System.Security.Cryptography;
using System.IO;
//默认密钥向量
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 EncryptStr = EncryptDESString.EncryptDES("aaaaaaaaaa", "ssssssss"); //返回加密后的字符串
string DecryptStr = EncryptDESString.DecryptDES(EncryptStr, "ssssssss");//解密字符串
0
投稿
猜你喜欢
- CircleImageView实现圆形头像代码分享,供大家参考,具体内容如下一、创建属性文件(attrs.xml)具体操作:1、在项目的va
- 本文实例为大家分享了java将一个目录下的所有数据复制到另一个目录下的具体代码,供大家参考,具体内容如下/* 将"C:\\Java
- 1.新建一个filter‘包2.新建一个类,实现ZuulFilter,重写里面的方法3.在顶部类添加注解,@Component,让Sprin
- 本文实例讲述了Java实现字符串解析为日期时间的方法。分享给大家供大家参考,具体如下:Java版本:1.8开始import java.tim
- Java提供了许多创建线程池的方式,并得到一个Future实例来作为任务结果。对于Spring同样小菜一碟,通过其scheduling包就可
- Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的
- 这篇文章主要介绍了Spring自定义参数解析器代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 本文主要是通过一个银行用户取钱的实例,演示java编程多线程并发处理场景,具体如下。从一个例子入手:实现一个银行账户取钱场景的实例代码。第一
- 对象POJO和JSON互转public class JsonUtil { /** * JSON 转 POJO &n
- 本文以新建的CUDA的.cu程序来进行说明,同样也适用于C程序。一,发现问题1,首先我们在vs2019中创建了工程以后(我所创建的工程名称为
- 最近经常在机房看同学在玩一个走迷宫的游戏,比较有趣,自己也用java写一个实现随机生成迷宫的算法,其实就是一个图的深度优先遍历算法.基本思想
- 一、思路1.获取播放组件一般我们使用UI的Raw Image或者Image来显示图片Image:仅支持Sprite类型图片,需要更改图片的格
- jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过
- java 中死锁问题的实例详解先看代码在做解释public class DeadLock implements Runnable{ &nbs
- 背景在一些业务场景, 往往需要自定义异常来满足特定的业务, 主流用法是在catch里抛出异常, 例如:public void deal()
- 先上结论:不要直接用double变量作为构造BigDecimal的参数。线上有这么一段Java代码逻辑:1,接口传来一个JSON串,里面有个
- int -> String int i=12345;String s="";核心:s=i+""
- 本文实例讲述了C#使用smtp发送带附件的邮件实现方法。可直接将string类型结果保存为附件。分享给大家供大家参考。具体分析如下:该方式直
- 插入排序原理①把所有元素分成已排序和未排序两组②找到未排序组的第一个元素,向已经排序的组中进行插入③倒序遍历已经排好的元素,依次和待插入的元
- 一、注册表操作简介Registry类,RegistryKey类提供了操作注册表的接口RegistryValueKind:用于指定操作注册表的