.net 加密与解密

public class Encrypts
    {
        ///   <summary>
        ///   构造方法
        ///   </summary>
        public Encrypts()
        {
        }
        ///   <summary>
        ///   使用缺省密钥字符串加密
        ///   </summary>
        ///   <param   name= "original "> 明文 </param>
        ///   <returns> 密文 </returns>
        public static string Encrypt(string original)
        {
            return Encrypt(original, "haha");
        }
        ///   <summary>
        ///   使用缺省密钥解密
        ///   </summary>
        ///   <param   name= "original "> 密文 </param>
        ///   <returns> 明文 </returns>
        public static string Decrypt(string original)
        {
            try
            {
                return Decrypt(original, "haha", System.Text.Encoding.Default);
            }
            catch
            {
                return ("");
            }
        }
        ///   <summary>
        ///   使用给定密钥解密
        ///   </summary>
        ///   <param   name= "original "> 密文 </param>
        ///   <param   name= "key "> 密钥 </param>
        ///   <returns> 明文 </returns>
        public static string Decrypt(string original, string key)
        {
            return Decrypt(original, key, System.Text.Encoding.Default);
        }
        ///   <summary>
        ///   使用缺省密钥解密,返回指定编码方式明文
        ///   </summary>
        ///   <param   name= "original "> 密文 </param>
        ///   <param   name= "encoding "> 编码方式 </param>
        ///   <returns> 明文 </returns>
        public static string Decrypt(string original, Encoding encoding)
        {
            return Decrypt(original, "haha", encoding);
        }
        ///   <summary>
        ///   使用给定密钥加密
        ///   </summary>
        ///   <param   name= "original "> 原始文字 </param>
        ///   <param   name= "key "> 密钥 </param>
        ///   <param   name= "encoding "> 字符编码方案 </param>
        ///   <returns> 密文 </returns>
        public static string Encrypt(string original, string key)
        {
            byte[] buff = System.Text.Encoding.Default.GetBytes(original);
            byte[] kb = System.Text.Encoding.Default.GetBytes(key);
            return Convert.ToBase64String(Encrypt(buff, kb));
        }

        ///   <summary>
        ///   使用给定密钥解密
        ///   </summary>
        ///   <param   name= "encrypted "> 密文 </param>
        ///   <param   name= "key "> 密钥 </param>
        ///   <param   name= "encoding "> 字符编码方案 </param>
        ///   <returns> 明文 </returns>
        public static string Decrypt(string encrypted, string key, Encoding encoding)
        {
            byte[] buff = Convert.FromBase64String(encrypted);
            byte[] kb = System.Text.Encoding.Default.GetBytes(key);
            return encoding.GetString(Decrypt(buff, kb));
        }
        ///   <summary>
        ///   生成MD5摘要
        ///   </summary>
        ///   <param   name= "original "> 数据源 </param>
        ///   <returns> 摘要 </returns>
        public static byte[] MakeMD5(byte[] original)
        {
            MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
            byte[] keyhash = hashmd5.ComputeHash(original);
            hashmd5 = null;
            return keyhash;
        }

        ///   <summary>
        ///   使用给定密钥加密
        ///   </summary>
        ///   <param   name= "original "> 明文 </param>
        ///   <param   name= "key "> 密钥 </param>
        ///   <returns> 密文 </returns>
        public static byte[] Encrypt(byte[] original, byte[] key)
        {
            TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
            des.Key = MakeMD5(key);
            des.Mode = CipherMode.ECB;

            return des.CreateEncryptor().TransformFinalBlock(original, 0, original.Length);
        }

        ///   <summary>
        ///   使用给定密钥解密数据
        ///   </summary>
        ///   <param   name= "encrypted "> 密文 </param>
        ///   <param   name= "key "> 密钥 </param>
        ///   <returns> 明文 </returns>
        public static byte[] Decrypt(byte[] encrypted, byte[] key)
        {
            TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
            des.Key = MakeMD5(key);
            des.Mode = CipherMode.ECB;

            return des.CreateDecryptor().TransformFinalBlock(encrypted, 0, encrypted.Length);
        }

        ///   <summary>
        ///   使用给定密钥加密
        ///   </summary>
        ///   <param   name= "original "> 原始数据 </param>
        ///   <param   name= "key "> 密钥 </param>
        ///   <returns> 密文 </returns>
        public static byte[] Encrypt(byte[] original)
        {
            byte[] key = System.Text.Encoding.Default.GetBytes("haha");
            return Encrypt(original, key);
        }

        ///   <summary>
        ///   使用缺省密钥解密数据
        ///   </summary>
        ///   <param   name= "encrypted "> 密文 </param>
        ///   <param   name= "key "> 密钥 </param>
        ///   <returns> 明文 </returns>
        public static byte[] Decrypt(byte[] encrypted)
        {
            byte[] key = System.Text.Encoding.Default.GetBytes("haha");
            return Decrypt(encrypted, key);
        }

    }
public class EncryDecry
    {

        #region 加密

        /// <summary>
        /// 加密
        /// </summary>
        /// <param name="data">明文</param>
        /// <param name="Key_64">Key_64 长度8位</param>
        /// <param name="Iv_64">Key_64 长度8位</param>
        /// <returns></returns>

        public static string Encrypt(string data, string Key_64, string Iv_64)
        {

            string KEY_64 = Key_64;// "12345678";

            string IV_64 = Iv_64;// "12345678";

            try
            {

                byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);

                byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

                DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();

                int i = cryptoProvider.KeySize;

                MemoryStream ms = new MemoryStream();

                CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);

                StreamWriter sw = new StreamWriter(cst);

                sw.Write(data);

                sw.Flush();

                cst.FlushFinalBlock();

                sw.Flush();

                return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);

            }

            catch (Exception x)
            {

                return x.Message;

            }

        }

        #endregion

        #region 解密

        /// <summary>
        /// 解密
        /// </summary>
        /// <param name="data">密文</param>
        /// <param name="Key_64">Key_64 长度8位</param>
        /// <param name="Iv_64">Key_64 长度8位</param>
        /// <returns></returns>
        public static string Decrypt(string data, string Key_64, string Iv_64)
        {

            string KEY_64 = Key_64;// "12345678";密钥

            string IV_64 = Iv_64;// "12345678"; 向量

            try
            {

                byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);

                byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

                byte[] byEnc;

                byEnc = Convert.FromBase64String(data); //把需要解密的字符串转为8位无符号数组

                DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();

                MemoryStream ms = new MemoryStream(byEnc);

                CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);

                StreamReader sr = new StreamReader(cst);

                return sr.ReadToEnd();

            }

            catch (Exception x)
            {

                return x.Message;

            }

        }

        #endregion

    }
时间: 2024-10-08 14:31:25

.net 加密与解密的相关文章

Java DES 加密和解密源码

Java密码学结构设计遵循两个原则: 1) 算法的独立性和可靠性. 2) 实现的独立性和相互作用性. 算法的独立性是通过定义密码服务类来获得.用户只需了解密码算法的概念,而不用去关心如何实现这些概念.实现的独立性和相互作用性通过密码服务提供器来实现.密码服务提供器是实现一个或多个密码服务的一个或多个程序包.软件开发商根据一定接口,将各种算法实现后,打包成一个提供器,用户可以安装不同的提供器.安装和配置提供器,可将包含提供器的ZIP和JAR文件放在CLASSPATH下,再编辑Java安全属性文件来

PHP 加密 和 解密 方法

关于Discuz的加密解密函数,相信大家都有所了解,该authcode函数可以说是对PHP界作出了重大的贡献,真的发觉discuz这个函数写的太精彩啦. 研究了一下这个算法,总的来说可以归纳为以下三点: 1,动态性,同一字符串使用相同的key,每次加密的密文都不一样,而解密方法只有一个,其实就是把解密的信息放到了密文上面. 2,时效性,可以自己加一个限期参数,以秒为单位,这个其实就是在密文里加入了有效时间. 3,统一性,加密和解密都用同一个函数,而且用了比较简单的异或算法. 由于该函数具有以上功

AES —— JAVA中对称加密和解密

package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.Base64; impor

加密、解密的原理及Openssl创建CA和ssh的基础应用

加密.解密的原理及Openssl创建CA和ssh的基础应用 随着互联网的不断发展和技术的不断成熟,在互联网上传输文件不在安全,在需要传送重要的数据时就必须加密处理. 密码算法分为三种:分别是对称加密,公钥加密,单向加密:以及需要对加密算法的认证,叫做认证协议.下面为大家概述对称加密,公钥加密,单向加密及认证协议 对称加密: 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密. 需要对加密和解密使用相同密钥的加密算法.由于其速度快,对称性

运维学习之加密和解密

运维学习之加密与解密: 众所周知,在网络的世界里不存在绝对的安全性.各种钓鱼网站,病毒等等危害着我们的网 络环境.所以,作为一个运维人员,在我们利用网络进行通信时,保证通信的机密性.完整性.可用性是必要的. 我们的日常生活中有以下三点威胁网络安全的行为: 1.威胁机密性的攻击行为,它的途径是窃听.嗅探.扫描和通信量分析 2.威胁完整性的攻击行为,它的途径是更改.伪装.重放.否认 3.威胁可用性的攻击行为,它的途径是拒绝服务 为应对以上问题,我们在技术和服务两方面提出了解决方案: 从技术上我们使用

第六章 加密与解密

6.1 什么是加密和解密? 加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密). 6.2 加密技术二元素:算法和密钥 算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的官方的步骤: 密钥是用来对数据进行编码和解密的一种算法. 在安全保密中,可通过适当的密钥加密技术和管理机制来保证网络的信息通信安全,使得未授权的用户即使获得了已加密的信息,但因不知解密方法,仍然无法了解信息内容. 6.3 为什么要加密?

RSA算法 JS加密 JAVA解密

有这样一个需求,前端登录的用户名密码,密码必需加密,但不可使用MD5,因为后台要检测密码的复杂度,那么在保证安全的前提下将密码传到后台呢,答案就是使用RSA非对称加密算法解决 . java代码 需要依赖 commons-codec 包 RSACoder.java import org.apache.commons.codec.binary.Base64; import javax.crypto.Cipher; import java.security.*; import java.securit

加密和解密技术基础、PKI及创建私有CA

一.数据加密和解密概述 数据加密和解密是一门历史悠久的技术,从古代就已经出现了,一直发展到当代.其中,数据加密的目的有很多,可以是为了保证本地数据存取的安全性,可以是为了保证数据流在网络传输过程中的保密性,也可以是为了验证数据的完整性,还可以通过数据加密来实现密钥的交换等. 数据加密依赖于某种加密算法和加密密钥,而数据解密则依赖于某种解密算法和解密密钥.而在当代加密解密技术中,加密密钥既可以与解密密钥相同,也可以和解密密钥不同,这取决于使用什么方法进行加解密. 二.安全的目标 就信息传输过程来说

iOS,一行代码进行RSA、DES 、AES、MD5加密、解密

最近做了一个移动项目,是有服务器和客户端类型的项目,客户端是要登录才行的,服务器也会返回数据,服务器是用Java开发的,客户端要同时支持多平台(Android.iOS),在处理iOS的数据加密的时候遇到了一些问题.起初采取的方案是DES加密,老大说DES加密是对称的,网络抓包加上反编译可能会被破解,故采取RSA方式加密.RSA加密时需要公钥和私钥,客户端保存公钥加密数据,服务器保存私钥解密数据.(iOS端公钥加密私钥解密.java端公钥加密私钥解密,java端私钥加密公钥解密都容易做到,iOS不

转:system.Security.Cryptography C# 加密和解密

以下文转自: http://www.360doc.com/content/13/0122/05/19147_261678471.shtml 总结:注册的时候经过MD5加密存进数据库,在登录的时候需要先加密输入的密码,再进行和数据库里的比对,因为同一字符串加密后是一样的,并不是无规则的:实例: string name = this.TextBox1.Text;        string pwd = System.Web.Security.FormsAuthentication.HashPassw