加密算法

Posted 云霄宇霁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了加密算法相关的知识,希望对你有一定的参考价值。

public class Cryptography
    {
        private static readonly Byte[] IV =
        {
            131, 124, 213, 11, 241, 214, 201, 103,
            138, 225, 188, 216, 116, 247, 152, 145
        };

        private Byte[] aesKey =
        {
            121, 249, 165, 183, 172, 16, 18, 24,
            111, 129, 121, 13, 152, 114, 238, 114
        };

        private Boolean isDefaultKey;

        public String Key
        {
            get { return Convert.ToBase64String(this.aesKey); }
            set
            {
                this.aesKey = Convert.FromBase64String(value);
                this.isDefaultKey = false;
            }
        }

        public bool IsDefaultKey
        {
            get { return this.isDefaultKey; }
        }

        public Byte[] Encrypt(Byte[] plainData)
        {
            using (var aesProvider = new AesCryptoServiceProvider())
            {
                using (var stream = new MemoryStream())
                {
                    using (var cryptoStream = new CryptoStream(
                        stream,
                        aesProvider.CreateEncryptor(this.aesKey, IV),
                        CryptoStreamMode.Write))
                    {
                        cryptoStream.Write(plainData, 0, plainData.Length);
                    }
                    var encryptMessageBytes = stream.ToArray();
                    var bts = new Byte[IV.Length + encryptMessageBytes.Length];
                    Array.Copy(IV, 0, bts, 0, IV.Length);
                    Array.Copy(encryptMessageBytes, 0, bts, IV.Length, encryptMessageBytes.Length);
                    return bts;
                }
            }
        }

        public Byte[] Decrypt(Byte[] encryptionData)
        {
            using (var aesProvider = new AesCryptoServiceProvider())
            {
                using (var stream = new MemoryStream())
                {
                    var iv = new Byte[16];
                    Array.Copy(encryptionData, 0, iv, 0, iv.Length);
                    using (var cryptoStream = new CryptoStream(
                        stream,
                        aesProvider.CreateDecryptor(this.aesKey, iv),
                        CryptoStreamMode.Write))
                    {
                        cryptoStream.Write(encryptionData, IV.Length, encryptionData.Length - IV.Length);
                    }
                    return stream.ToArray();
                }
            }
        }

        public String EncryptString(String plainString)
        {
            var buffer = Encoding.UTF8.GetBytes(plainString);
            var encryptMessageBytes = this.Encrypt(buffer);
            return Convert.ToBase64String(encryptMessageBytes);
        }

        public String DecryptString(String encryptedString)
        {
            var buffer = Convert.FromBase64String(encryptedString);
            var decryptMessageBytes = this.Decrypt(buffer);
            return Encoding.UTF8.GetString(decryptMessageBytes);
        }
    }

  

以上是关于加密算法的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段的算法复杂度

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

片段(Java) | 机试题+算法思路+考点+代码解析 2023

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

aes加密算法C代码

求RSA加密解密算法,c++源代码