通过密钥对字符串进行加解密(C#)

简介:   视频上看到的例子,对着视频打了一遍代码,测试失败,上网搜索后改了一下测试成功,不知道为什么跟视频上打的一样的代码视频上测试的正确而我的测试出错的,先不管了,先记下来,以备后用!Code    /// 字符串加解密    ///     ///     public class Encrypt...

  视频上看到的例子,对着视频打了一遍代码,测试失败,上网搜索后改了一下测试成功,不知道为什么跟视频上打的一样的代码视频上测试的正确而我的测试出错的,先不管了,先记下来,以备后用!

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif Code
    /// <summary>字符串加解密
    
/// 
    
/// </summary>
    public class Encrypt
    {
        
private SymmetricAlgorithm mCSP;
        
private const string CIV = "oo*/^fsA";  //密钥, 只能是8位
        private const string CKEY = "f123$dew"//初始化向量, 只能是8位

        
public Encrypt()
        {
            mCSP 
= new DESCryptoServiceProvider();
        }

        
/// <summary>加密字符串
        
/// 
        
/// </summary>
        
/// <param name="Value"></param>
        
/// <returns></returns>
        public string EncryptString(string Value)
        {
            ICryptoTransform ct;
            MemoryStream ms;
            CryptoStream cs;
            
byte[] byt;
            
// 这里视频上用的是Convert.FromBase64String(CKEY/CIV),但是我用的话总是出现错误,什么大小不对
            ct = mCSP.CreateEncryptor(Encoding.ASCII.GetBytes(CKEY), Encoding.ASCII.GetBytes(CIV));
            byt 
= Encoding.UTF8.GetBytes(Value);
            ms 
= new MemoryStream();
            cs 
= new CryptoStream(ms, ct, CryptoStreamMode.Write);
            cs.Write(byt, 
0, byt.Length);
            cs.FlushFinalBlock();
            cs.Close();
            
return Convert.ToBase64String(ms.ToArray());
        }

        
/// <summary>解密字符串
        
/// 
        
/// </summary>
        
/// <param name="Value"></param>
        
/// <returns></returns>
        public string DecryptString(string Value)
        {
            ICryptoTransform ct;
            MemoryStream ms;
            CryptoStream cs;
            
byte[] byt;
            ct 
= mCSP.CreateDecryptor(Encoding.ASCII.GetBytes(CKEY), Encoding.ASCII.GetBytes(CIV));
            byt 
= Convert.FromBase64String(Value);

            ms 
= new MemoryStream();
            cs 
= new CryptoStream(ms, ct, CryptoStreamMode.Write);
            cs.Write(byt, 
0, byt.Length);
            cs.FlushFinalBlock();
            cs.Close();

            
return Encoding.UTF8.GetString(ms.ToArray());
        }
    }

 

测试代码:

         static   void  Main( string [] args)
        {
            Console.Write(
" 请输入要加密的字符串: " );
            
string  str  =  Console.ReadLine();
            Console.WriteLine(
" 加密后: "   +   new  Encrypt().EncryptString(str));
            Console.ReadLine();

            Console.Write(
" 请输入要解密的字符串: " );
            
string  str2  =  Console.ReadLine();
            Console.WriteLine(
" 解密后: "   +   new  Encrypt().DecryptString(str2));
            Console.ReadLine();
        }

 

 测试效果:

 

目录
相关文章
|
数据安全/隐私保护
rsa 生成密匙 ,密匙导出,加密解密封装
rsa 生成密匙 ,密匙导出,加密解密封装
159 0
|
C# 数据安全/隐私保护
C#使用SHA1加密类(RSAFromPkcs8)支持1024位和2048位私钥
C#使用SHA1加密类(RSAFromPkcs8)支持1024位和2048位私钥
229 0
|
安全 数据安全/隐私保护 C++
C/C++ 使用 cryptopp 加密解密
CryptLib 是新西兰奥克兰大学的Peter Gutmann先生花费了将近五年时间开发而成的一个加密安全工具包,它基于传统的计算机安全模型,并涉及到一个安全核心,各种抽象化了的对象位于核心之上。CRYPTLIB利用此加密库不同层次的接口,可以很容易地为各种应用系统提供安全服务,如加/解密、数字签名、认证等。
373 0
|
算法 安全 关系型数据库
更加安全的密钥生成方法Diffie-Hellman
更加安全的密钥生成方法Diffie-Hellman更加安全的密钥生成方法Diffie-Hellman
更加安全的密钥生成方法Diffie-Hellman
|
安全 算法 Java
有关密钥的最全总结都在这了
有关密钥的最全总结都在这了
有关密钥的最全总结都在这了
|
C# 数据安全/隐私保护
RSA不限长度非对称加密解密C#
RSA 分段加解密【解决“不正确的长度”的异常】   RSA 是常用的非对称加密算法。最近使用时却出现了“不正确的长度”的异常,研究发现是由于待加密的数据超长所致。   .NET Framework 中提供的 RSA 算法规定:   待加密的字节数不能超过密钥的长度值除以 8 再减去 11(即:RSACryptoServiceProvider.KeySize / 8 - 11),而加密后得到密文的字节数,正好是密钥的长度值除以 8(即:RSACryptoServiceProvider.KeySize / 8)。
1558 0
|
移动开发 Java 数据安全/隐私保护
小程序RSA非对称加密/解密
小程序RSA非对称加密/解密 官方文档参考:官方文档参考 1.my.rsa 支持的密钥1024或者2048都可以进行加密解密(密钥的生成可以用代码(如java)自行实现或者使用工具生成(可参考:支付宝提供一键生成密钥工具)); 2.
1707 0
密钥原理,公钥和私钥的作用
说明: 下面流程图中说到的支付宝私钥是不对外开放的,商户自己的私钥也要注意保密不要对外展示,否则会影响账号安全!  一般我们会看到4个密钥      rsa_private_key              商户私钥 :        适用开发语言php ,.net等。
1521 0
|
数据安全/隐私保护 索引
|
算法 数据安全/隐私保护

热门文章

最新文章