• PBE加密 .net 实现


    using System;
    using System.Security.Cryptography;
    using System.Text;
    
    namespace Demo
    {
        internal class PKCSKeyGenerator
        {
            byte[] key = new byte[8], iv = new byte[8];
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();
            public byte[] Key { get { return key; } }
            public byte[] IV { get { return iv; } }
            public ICryptoTransform Encryptor { get { return des.CreateEncryptor(key, iv); } }
            public ICryptoTransform Decryptor { get { return des.CreateDecryptor(key, iv); } }
            public PKCSKeyGenerator() { }
            public PKCSKeyGenerator(String keystring, byte[] salt, int md5iterations, int segments)
            {
                Generate(keystring, salt, md5iterations, segments);
            }
            public ICryptoTransform Generate(String keystring, byte[] salt, int md5iterations, int segments)
            {
                int HASHLENGTH = 16;
                byte[] keymaterial = new byte[HASHLENGTH * segments];
                byte[] psbytes;
                psbytes = Encoding.UTF8.GetBytes(keystring);
                byte[] data00 = new byte[psbytes.Length + salt.Length];
                Array.Copy(psbytes, data00, psbytes.Length);
                Array.Copy(salt, 0, data00, psbytes.Length, salt.Length);
                MD5 md5 = new MD5CryptoServiceProvider();
                byte[] result = null;
                byte[] hashtarget = new byte[HASHLENGTH + data00.Length];
    
                for (int j = 0; j < segments; j++)
                {
                    if (j == 0)
                    {
                        result = data00;
                    }
                    else
                    {
                        Array.Copy(result, hashtarget, result.Length);
                        Array.Copy(data00, 0, hashtarget, result.Length, data00.Length);
                        result = hashtarget;
                    }
                    for (int i = 0; i < md5iterations; i++)
                    {
                        result = md5.ComputeHash(result);
                    }
                    Array.Copy(result, 0, keymaterial, j * HASHLENGTH, result.Length);
                }
                Array.Copy(keymaterial, 0, key, 0, 8);
                Array.Copy(keymaterial, 8, iv, 0, 8);
                return Encryptor;
            }
        }
    }
    View Code
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace Demo
    {
        /// <summary>
        /// PBE加密
        /// </summary>
        public class PBE
        {
            /// <summary>
            /// 根据密码密钥和干扰盐值得到加密后的密文
            /// </summary>
            /// <param name="passWord">密码</param>
            /// <param name="passWordKey">加密key</param>
            /// <param name="salt">干扰盐</param>
            /// <returns></returns>
            public static String Encryption(String passWord, String passWordKey, string salt="00000000")
            {
                int count = 1000; 
                PKCSKeyGenerator cipher = new PKCSKeyGenerator(passWordKey, Encoding.UTF8.GetBytes(salt), count, 1);
                byte[] src = Encoding.UTF8.GetBytes(passWord);
                byte[] result = cipher.Encryptor.TransformFinalBlock(src, 0, src.Length);
                string ret = "";
                for (int i = 0; i < result.Length; i++)
                {
                    ret += Convert.ToString(result[i], 16).PadLeft(2, '0');
                }
                return ret;
            }
        }
    }
  • 相关阅读:
    751时尚公开课(三)宋杰林:时尚大跃进_豆瓣
    第九课堂-经验与技能分享交易网站
    751D·PARK北京时尚设计广场_百度百科
    2014马上有乐趣 每周六免费服装缝纫体验课_豆瓣
    设计工作室寻求合作
    【基础穿搭法】关于穿衣显高和好看的三个小技巧。(请深爱)
    给快播指一条生路:转型会员付费吧
    美华美依 | 创业谱
    服装配饰_MAVIN MARVY 高级服装定制_西服定制_衬衫定制_西装定制
    探索者系列_百度百科
  • 原文地址:https://www.cnblogs.com/zzfstudy/p/11763227.html
Copyright © 2020-2023  润新知