对称加密

C# 数据流详解(FileStream、MemoryStream、NetworkStream等类) 本文仅为个人理解,如有错误请指正。 本文章内容主要为数据流及相关辅助类: 流(Stream)、文件流(FileStream)、内存流(MemoryStream)、网络流(NetworkStream)、加密流(CryptoStream)以及文本读写的StreamReader、StreamWriter、用于二进制读写的BinaryReader和BinaryWriter类等。 对FileStrea... 阅读详情


    #region --System.Security.Cryptography--
    //mscorlib --> System.Security.Cryptography
    //散列算法
    //HashAlgorithm
    //      |-------MD5
    //      |       |----------MD5CryptoServiceProvider
    //      |
    //      |-------SHA1
    //      |       |----------SHA1Managed(SHA1CryptoServiceProvider)
    //      |
    //      |-------SHA256
    //      |       |----------SHA256Managed
    //      |
    //      |-------SHA384
    //      |       |----------SHA384Managed
    //      |
    //      |-------SHA512
    //      |       |----------SHA512Managed
    //      |
    //      |-------RIPEMD160
    //      |       |----------RIPEMD160Managed
    //      |
    //      |-------KeyedHashAlgorithm
    //              |----------HMAC
    //              |           |----------------HMACMD5
    //              |           |----------------HMACSHA1
    //              |           |----------------HMACSHA256
    //              |           |----------------HMACSHA384
    //              |           |----------------HMACSHA512
    //              |           |----------------HMACRIPEMD160
    //              |
    //              |----------MACTripleDES

    //对称加密算法
    //SymmetricAlgorithm
    //      |-------DES
    //      |       |-----------DESCryptoServiceProvider
    //      |
    //      |-------Rijndael
    //      |       |-----------RijndaelManaged
    //      |
    //      |-------RC2
    //      |       |-----------RC2CryptoServiceProvider
    //      |
    //      |-------TripleDES
    //              |-----------TripleDESCryptoServiceProvider

    //非对称加密算法
    //AsymmetricAlgorithm
    //      |-------RSA
    //      |       |-----------RSACryptoServiceProvider
    //      |
    //      |-------DSA
    //              |-----------DSACryptoServiceProvider

    //AsymmetricKeyExchangeFormatter
    //      |-------RSAOAEPKeyExchangeFormatter
    //      |-------RSAPKCSIKeyExchangeFormatter

    //AsymmetricKeyExchangeDeformatter
    //      |-------RSAOAEPKeyExchangeDeformatter
    //      |-------RSAPKCSIKeyExchangeDeformatter

    //AsymmetricSignatureFormatter
    //      |-------RSAPKCSISignatureFormatter
    //      |-------DSASignatureFormatter

    ////AsymmetricSignatureDeformatter
    //      |-------RSAPKCSISignatureDeformatter
    //      |-------DSASignatureDeformatter
    #endregion

    /// <summary>
    /// 加 解 密的对象
    /// </summary>
    public class EncryptModel
    {
        /// <summary>
        /// 暂时只根据key,iv进行设置
        /// </summary>
        /// <param name="key"></param>
        /// <param name="iv"></param>
        public EncryptModel(string key, string iv)
        {
            this._key = key;
            this._iv = iv;
        }

        /// <summary>
        /// 密钥
        /// </summary>
        private string _key = string.Empty;
        /// <summary>
        /// 向量
        /// </summary>
        private string _iv = string.Empty;
        /// <summary>
        /// 密钥长度
        /// </summary>
        private int _keySize = 8;
        /// <summary>
        /// 获取或设置加密操作的块大小(以位为单位)
        /// </summary>
        private int _blockSize = 8;

        /// <summary>
        /// 获取或设置加密操作的反馈大小(以位为单位)。
        /// </summary>
        private int _feedbackSize = 0;

        /// <summary>
        /// 获取或设置对称算法的运算模式。CipherMode.CBC
        /// </summary>
        private CipherMode _cryptMode;
        /// <summary>
        /// 获取或设置对称算法中使用的填充模式。PaddingMode.ANSIX923
        /// </summary>
        private PaddingMode _cryptPadding;
        /// <summary>
        /// 加密密钥(8個英文字)
        /// </summary>
        public string Key
        {
            get { return _key; }
            set { _key = value.Length == 8 ? value : "AndyCode"; }//暂时定义为8
        }
        /// <summary>
        /// 初始化向量(8個英文字)
        /// </summary>
        public string Iv
        {
            get { return _iv; }
            set { _iv = value.Length == 8 ? value : "HeXiaoEr"; }//暂时定义为8
        }
        /// <summary>
        /// 密钥长度
        /// </summary>
        public int KeyLength
        {
            get { return _keySize; }
            set { _keySize = value; }
        }
        /// <summary>
        /// 获取或设置加密操作的块大小(以位为单位)
        /// </summary>
        public int BlockSize
        {
            get { return _blockSize; }
            set { _blockSize = value; }
        }
        /// <summary>
        /// 获取或设置加密操作的反馈大小(以位为单位)。
        /// </summary>
        public int FeedbackSize
        {
            get { return _feedbackSize; }
            set { _feedbackSize = value; }
        }
        /// <summary>
        /// 获取或设置对称算法的运算模式。CipherMode.CBC
        /// </summary>
        public CipherMode CryptMode
        {
            get { return _cryptMode; }
            set { _cryptMode = value; }
        }
        /// <summary>
        /// 获取或设置对称算法中使用的填充模式。PaddingMode.ANSIX923
        /// </summary>
        public PaddingMode CryptPadding
        {
            get { return _cryptPadding; }
            set { _cryptPadding = value; }
        }
    }



    /// <summary>
    /// 加密解密算法基类
    /// </summary>
    public abstract class EncryptDecrypt
    {
        public abstract string Encrypt(string encryptStr, EncryptModel encryptModel);
        public abstract string Decrypt(string decryptStr, EncryptModel decryptModel);
    }

#region -- 对称加密 --

    //在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。
    //收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。

    //BlockSize         获取或设置加密操作的块大小(以位为单位)。
    //FeedbackSize      获取或设置加密操作的反馈大小(以位为单位)。
    //IV                获取或设置对称算法的初始化向量 (IV)。
    //Key               已重写。获取或设置数据加密标准 (DES) 算法的机密密钥。
    //KeySize           获取或设置对称算法使用的机密密钥的大小(以位为单位)。
    //Mode              获取或设置对称算法的运算模式。
    //Padding           获取或设置对称算法中使用的填充模式。

    //LegalBlockSizes   获取对称算法支持的块大小。
    //LegalKeySizes     获取对称算法支持的密钥大小。

    //Clear()           释放由 SymmetricAlgorithm 占用的所有资源。
    //CreateDecryptor() 已重载。已重写。创建对称数据加密标准 (DES) 解密器对象。
    //CreateEncryptor() 已重载。已重写。创建对称数据加密标准 (DES) 加密器对象。
    //GenerateIV()      已重写。生成用于该算法的随机初始化向量(IV)。
    //GenerateKey()     已重写。生成用于该算法的随机 Key。
    //ValidKeySize()    确定指定的密钥大小对当前算法是否有效。
    /// <summary>
    /// Des加密解密 8字节的key,初始向量IV也是8字节。
    /// </summary>
    public class DesEncryptDecrypt : EncryptDecrypt
    {
        /// <summary>
        /// 加密
        /// </summary>
        /// <param name="encryptStr"></param>
        /// <param name="encryptModel"></param>
        /// <returns></returns>
        public override string Encrypt(string encryptStr, EncryptModel encryptModel)
        {
            string temp = string.Empty;
            using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())//DES算法的加密类
            {
                //将字符串转换为byte
                byte[] inputByteArray = Encoding.Default.GetBytes(encryptStr);
                //设定对称算法的加密密钥(长度为64位,也就是8个字节)
                des.Key = ASCIIEncoding.ASCII.GetBytes(encryptModel.Key);
                //设定对称算法的初始化向量(长度为64位,也就是8个字节)
                des.IV = ASCIIEncoding.ASCII.GetBytes(encryptModel.Iv);

                using (MemoryStream ms = new MemoryStream())//辅助的内存流对象
                {
                    using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(inputByteArray, 0, inputByteArray.Length);
                        cs.FlushFinalBlock();
                    }
                    temp = Convert.ToBase64String(ms.ToArray());
                }
            }
            return temp;
        }

        /// <summary>
        /// 解密
        /// </summary>
        /// <param name="decryptStr"></param>
        /// <param name="decryptModel"></param>
        /// <returns></returns>
        public override string Decrypt(string decryptStr, EncryptModel decryptModel)
        {
            using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())//DES算法的加密类
            {
                byte[] inputByteArray = new byte[decryptStr.Length / 2];
                //反转
                for (int x = 0; x < decryptStr.Length / 2; x++)
                {
                    int i = (Convert.ToInt32(decryptStr.Substring(x * 2, 2), 16));
                    inputByteArray[x] = (byte)i;
                }
                //解密密钥必须是加密时候的密钥
                des.Key = ASCIIEncoding.ASCII.GetBytes(decryptModel.Key);
                //解密向量必须是加密时候的向量
                des.IV = ASCIIEncoding.ASCII.GetBytes(decryptModel.Iv);
                using (MemoryStream ms = new MemoryStream())//辅助的内存流对象
                {
                    using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read))
                    {
                        try
                        {
                            cs.Write(inputByteArray, 0, inputByteArray.Length);
                            cs.FlushFinalBlock();
                            return System.Text.Encoding.Default.GetString(ms.ToArray());
                        }
                        catch
                        {
                            return "N/A";
                        }
                    }
                }
            }
        }
    }
    /// <summary>
    /// RC2加密解密 any个字节key,初始向量IV也是8字节。
    /// </summary>
    public class Rc2EncryptDecrypt : EncryptDecrypt
    {
        /// <summary>
        /// 加密
        /// </summary>
        /// <param name="encryptStr"></param>
        /// <param name="encryptModel"></param>
        /// <returns></returns>
        public override string Encrypt(string encryptStr, EncryptModel encryptModel)
        {
            string temp = string.Empty;
            using (RC2CryptoServiceProvider rc2 = new RC2CryptoServiceProvider())//RC2算法的加密类
            {
                //将字符串转换为byte
                byte[] inputByteArray = Encoding.Default.GetBytes(encryptStr);
                //设定对称算法的加密密钥
                rc2.Key = ASCIIEncoding.ASCII.GetBytes(encryptModel.Key);
                //设定对称算法的初始化向量(长度为64位,也就是8个字节)
                rc2.IV = ASCIIEncoding.ASCII.GetBytes(encryptModel.Iv);
                using (MemoryStream ms = new MemoryStream())//辅助的内存流对象
                {
                    using (CryptoStream cs = new CryptoStream(ms, rc2.CreateEncryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(inputByteArray, 0, inputByteArray.Length);
                        cs.FlushFinalBlock();
                    }
                    temp = Convert.ToBase64String(ms.ToArray());
                }
            }
            return temp;
        }
        /// <summary>
        /// 解密
        /// </summary>
        /// <param name="decryptStr"></param>
        /// <param name="decryptModel"></param>
        /// <returns></returns>
        public override string Decrypt(string decryptStr, EncryptModel decryptModel)
        {
            using (RC2CryptoServiceProvider rc2 = new RC2CryptoServiceProvider())//RC2算法的加密类
            {
                //将字符串转换为byte
                byte[] inputByteArray = Encoding.Default.GetBytes(decryptStr);
                //设定对称算法的加密密钥 密钥必须为5-16位
                rc2.Key = ASCIIEncoding.ASCII.GetBytes(decryptModel.Key);
                //设定对称算法的初始化向量(长度为64位,也就是8个字节)
                rc2.IV = ASCIIEncoding.ASCII.GetBytes(decryptModel.Iv);
                using (MemoryStream ms = new MemoryStream())//辅助的内存流对象
                {
                    using (CryptoStream cs = new CryptoStream(ms, rc2.CreateDecryptor(), CryptoStreamMode.Read))
                    {
                        try
                        {
                            cs.Write(inputByteArray, 0, inputByteArray.Length);
                            cs.FlushFinalBlock();
                            return Encoding.Default.GetString(ms.ToArray());
                        }
                        catch
                        {
                            return "N/A";
                        }
                    }
                }
            }
        }
    }
    /// <summary>
    /// Rijndael加密解密 16,24或42字节的key,初始向量IV也是8字节。 AES
    /// </summary>
    public class RijndaelEncryptDecrypt : EncryptDecrypt
    {
        /// <summary>
        /// 加密
        /// </summary>
        /// <param name="encryptStr"></param>
        /// <param name="encryptModel"></param>
        /// <returns></returns>
        public override string Encrypt(string encryptStr, EncryptModel encryptModel)
        {
            string temp = string.Empty;
            using (RijndaelManaged rijndael = new RijndaelManaged())//RC2算法的加密类
            {
                //将字符串转换为byte
                byte[] inputByteArray = Encoding.Default.GetBytes(encryptStr);
                //设定对称算法的加密密钥
                rijndael.Key = ASCIIEncoding.ASCII.GetBytes(encryptModel.Key);
                //设定对称算法的初始化向量(长度为64位,也就是8个字节)
                rijndael.IV = ASCIIEncoding.ASCII.GetBytes(encryptModel.Iv);
                using (MemoryStream ms = new MemoryStream())//辅助的内存流对象
                {
                    using (CryptoStream cs = new CryptoStream(ms, rijndael.CreateEncryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(inputByteArray, 0, inputByteArray.Length);
                        cs.FlushFinalBlock();
                    }
                    temp = Convert.ToBase64String(ms.ToArray());
                }
            }
            return temp;
        }
        /// <summary>
        /// 解密
        /// </summary>
        /// <param name="decryptStr"></param>
        /// <param name="decryptModel"></param>
        /// <returns></returns>
        public override string Decrypt(string decryptStr, EncryptModel decryptModel)
        {
            using (RijndaelManaged rijndael = new RijndaelManaged())//Rijndael算法的加密类
            {
                //将字符串转换为byte
                byte[] inputByteArray = Encoding.Default.GetBytes(decryptStr);
                //设定对称算法的加密密钥 密钥必须为5-16位
                rijndael.Key = ASCIIEncoding.ASCII.GetBytes(decryptModel.Key);
                //设定对称算法的初始化向量(长度为64位,也就是8个字节)
                rijndael.IV = ASCIIEncoding.ASCII.GetBytes(decryptModel.Iv);
                using (MemoryStream ms = new MemoryStream())//辅助的内存流对象
                {
                    using (CryptoStream cs = new CryptoStream(ms, rijndael.CreateDecryptor(), CryptoStreamMode.Read))
                    {
                        try
                        {
                            cs.Write(inputByteArray, 0, inputByteArray.Length);
                            cs.FlushFinalBlock();
                            return Encoding.Default.GetString(ms.ToArray());
                        }
                        catch
                        {
                            return "N/A";
                        }
                    }
                }
            }
        }
    }
    /// <summary>
    /// TripleDes加密解密 16或24字节的key,初始向量IV也是8字节。
    /// </summary>
    public class TripleDesEncryptDecrypt : EncryptDecrypt
    {
        /// <summary>
        /// 加密
        /// </summary>
        /// <param name="encryptStr"></param>
        /// <param name="encryptModel"></param>
        /// <returns></returns>
        public override string Encrypt(string encryptStr, EncryptModel encryptModel)
        {
            string temp = string.Empty;
            using (TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider())//RC2算法的加密类
            {
                //将字符串转换为byte
                byte[] inputByteArray = Encoding.Default.GetBytes(encryptStr);
                //设定对称算法的加密密钥
                tripleDES.Key = ASCIIEncoding.ASCII.GetBytes(encryptModel.Key);
                //设定对称算法的初始化向量(长度为64位,也就是8个字节)
                tripleDES.IV = ASCIIEncoding.ASCII.GetBytes(encryptModel.Iv);
                using (MemoryStream ms = new MemoryStream())//辅助的内存流对象
                {
                    using (CryptoStream cs = new CryptoStream(ms, tripleDES.CreateEncryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(inputByteArray, 0, inputByteArray.Length);
                        cs.FlushFinalBlock();
                    }
                    temp = Convert.ToBase64String(ms.ToArray());
                }
            }
            return temp;
        }
        /// <summary>
        /// 解密
        /// </summary>
        /// <param name="decryptStr"></param>
        /// <param name="decryptModel"></param>
        /// <returns></returns>
        public override string Decrypt(string decryptStr, EncryptModel decryptModel)
        {
            using (TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider())//TripleDES算法的加密类
            {
                //将字符串转换为byte
                byte[] inputByteArray = Encoding.Default.GetBytes(decryptStr);
                //设定对称算法的加密密钥 密钥必须为5-16位
                tripleDES.Key = ASCIIEncoding.ASCII.GetBytes(decryptModel.Key);
                //设定对称算法的初始化向量(长度为64位,也就是8个字节)
                tripleDES.IV = ASCIIEncoding.ASCII.GetBytes(decryptModel.Iv);
                using (MemoryStream ms = new MemoryStream())//辅助的内存流对象
                {
                    using (CryptoStream cs = new CryptoStream(ms, tripleDES.CreateDecryptor(), CryptoStreamMode.Read))
                    {
                        try
                        {
                            cs.Write(inputByteArray, 0, inputByteArray.Length);
                            cs.FlushFinalBlock();
                            return Encoding.Default.GetString(ms.ToArray());
                        }
                        catch
                        {
                            return "N/A";
                        }
                    }
                }
            }
        }
    }
    #endregion
对称加密、非对称加密深度解析 * 对称加密: 加密密钥和解密密钥相同 * 非对称加密: 加密密钥和解密密钥不相同 阅读详情

相关推荐

Oracle EBS R12 AP模块发票导入接口实战:从SQL插入到API调用的完整流程

本文详细解析了Oracle EBS R12 AP模块发票导入接口的完整流程,从SQL插入到API调用的实战技巧。涵盖接口表设计、数据验证、双通道导入机制及错误诊断,特别分享官方文档未提及的高阶优化方案,助力企业实现财务数字化转型。

weixin_33728268的博客 476

AES解密中FlushFinalBlock遇到的错误 解决方案 和疑问

我想using System.Security.Cryptography;实现AES的加密解密功能,加密可以正常进行解密时红色地方的语句会出现异常。  如果算法用的DES就没这个问题,请问这个异常怎么解决,微软官方上都没解决方案,国外一些提问网站也没解决。不知道谁能告诉我怎么做  //AES加密        public static string EnAES(strin

whwhzzz的专栏 4171

三相直流无刷电机(带HALL传感器)BLDC控制一

本案例选择TIM0的CH0/CH1/CH2三个通道接入三路原始hall输出信号。三路TIM_CHx(48)通过配置存入到NIP寄存器(new input pattern,3 bits)内。未完待续。

m0_69929716的博客 406

C#高级--加密解密详解

https://blog.youkuaiyun.com/liyou123456789/article/details/120609269

xwnxwn的专栏 1471

【VeriStand】从零构建HIL测试平台:核心概念、硬件选型与实战配置指南

本文详细介绍了如何从零构建HIL测试平台,涵盖核心概念、硬件选型与实战配置指南。重点解析了VeriStand生态系统的优势,包括开箱即用特性、与LabVIEW的黄金搭档配合及Python支持。通过实战案例和硬件选型建议,帮助工程师高效搭建可靠的HIL测试平台,提升测试效率与安全性。

weixin_29250573的博客 329

复现论文报错解决

博主复现论文代码过程中遇到的各种报错及解决方案~

rellvera的博客 1060

C# DES解密异常问题

一、C#DES解密操作定义 private static string key = "ceshishiyong"; private static byte[] Keys = new byte[] { 0x12, 0x34, 0x56, 120, 0x90, 0xab, 0xcd, 0xef };//8个bit位,是DES算法的初始化向量 加解密钥也是8位; /// /// 解密字符串 ///

天马3798 3988

Ubuntu登录界面黑屏?手把手教你排查和修复LightDM启动失败(附debug命令详解)

本文详细介绍了Ubuntu系统中LightDM(Light Display Manager)启动失败导致登录界面黑屏的排查与修复方法。通过系统状态检查、调试模式分析、常见故障解决方案及高级调试技巧,帮助用户快速定位并解决LightDM相关问题,恢复正常的图形登录环境。

weixin_34005090的博客 316

对称加密与非对称加密

在现代社会中,我们很多信息都需要通过互联网来传输,这些信息中难免会包含一些私密或者机密的内容,如果直接通过明文传输是非常不安全的,这就需要使用密钥并使用一定的算法对这些明文信息进行加密形成密文后再进行传输,最后接收方对密文进行解密,以获取里面的明文内容,这就涉及到密码学了。 我们先了解几个概念,虽然很简单,但是对于从未接触过加密的人来说还是有必要提一下的。 明文: 明文指的是未被加密过的原始数据。 密文: 明文被某种加密算法加密之后,会变成密文,从而确保原始数据的安全。密文也可以被解密,得到原始的明文。 密

qq_38571892的博客 1万+

【宠物识别系统】设计框架

能跑通的 Demo。收集 10,000 张同品种但不同个体的图片。训练ArcFace模型,验证准确率能否达到 99% 以上。搭建Milvus向量数据库。开发移动端 App/小程序。加入“图像质量检测”和“用户反馈纠错”功能。你是更偏向于做软件服务(如寻宠App、保险API),还是做软硬结合的产品(如智能喂食器)?这决定了我们下一步是深挖云端高并发架构,还是边缘端模型压缩。更偏向于软件,应用更广泛些,继续既然专注于纯软件/SaaS (Software as a Service) 方向。

百态·数智思维 | 聚焦大数据、量化与未来AI 1414

ContextCapture导入点云进行重建

ContextCapture导入点云进行重建

天桥飞熊的博客 1万+

java对称加密与非对称加密

java对称加密与非对称加密加密方式大致分为两种,对称加密和非对称加密。对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请

chengbinbbs的专栏 2万+

电子电器架构 -- 汽车零部件DV试验与PV试验的定义及关键差异

电子电器架构 -- 汽车零部件DV试验与PV试验的定义及关键差异

Soly_kun的博客 733

对称加密和非对称加密详解

目录 一、对称加密(Symmetric Cryptography) 二、非对称加密(Asymmetric Cryptography) 三、总结 一、对称加密(Symmetric Cryptography) 对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。 对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,

chaopingyao的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

对称加密与非对称加密的区别是什么?

顾名思义,非对称加密的加密密钥和解密密钥是不同的,涉及两个密钥,分别称为公开密钥(public key)和私有密钥(private key)。不足之处是,交易双方都使用同样密钥,所以对称加密的安全性就不仅仅取决于加密算法本身,更取决于密钥是否被安全的保管和传输,因此加密发送方如何把密钥安全地传递到解密接收方手中,才是对称加密面临的关键问题。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一密钥,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担。

记录学习路上的每一个 “啊哈!” 时刻 欢迎交流,共同进步! 2225

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

什么是非对称加密?非对称加密和对称加密的区别,如何在java中实现非对称加密?

举个栗子:如有A,B,C三个人,如果A要想向B发信息,而不想被C读取到,这个时候例如A使用对称加密,首先A使用对称加密将消息进行加密,然后将加密后的消息发送给B,并将密钥发送给B,这个时候C去截取消息,截取到消息后,使用消息当中的密钥将消息解密后就读取到了。所以A打算使用非对称加密,首先需要B先生成一个公钥发送给A后,A使用公钥将数据发送给B,然后B在使用密钥将数据进行解密,在发送途中如果C截取到了数据和公钥也是没用的,因为在非对称加密当中公钥用来加密,私钥用来解密。第二步:对数据进行加密。

2402_87688996的博客 1849

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

对称加密与非对称加密原理及应用对比

通过上述对比可以看出,对称加密和非对称加密各有其特点和适用场景,在实际的信息安全保障体系中,常常会结合两者的优势来综合运用,以实现更高效、更安全的数据保护和通信安全保障。

m0_71322636的博客 1439

浅谈对称加密与非对称加密

对称加密 定义: 对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。 换言之: 加密:原文 + 密匙 = 密文 解

king9666的博客 2755

对称加密与非对称加密的特点

通过理解对称加密和非对称加密的特点和应用场景,可以更好地设计和实施安全的信息系统,保护数据和通信的安全。

ljl1704的专栏 950
上一篇: 冒泡算法 鸡尾酒算法 插入排序
下一篇: 发送邮件
andycode
博客等级 码龄17年 12粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值