首页 > 代码库 > RSA 加解密

RSA 加解密

        #region RSA        public static byte[] GetBytes(String num)        {            BigInteger n = new BigInteger(num, 10);            String s = n.ToString(2);            if (s.Length % 8 > 0)            {                s = new String(0, 8 - s.Length % 8) + s;            }            byte[] data = http://www.mamicode.com/new byte[s.Length / 8];            String ocetstr;            for (int i = 0; i < data.Length; i++)            {                ocetstr = s.Substring(8 * i, 8);                data[i] = Convert.ToByte(ocetstr, 2);            }            return data;        }        /// <summary>         /// 字节数组转16进制字符串         /// </summary>         /// <param name="bytes"></param>         /// <returns></returns>         public static String ConvByteArrayToHex(byte[] data)        {            String s = "";            for (int i = 0; i < data.Length; i++)            {                s += Convert.ToString(data[i], 16);            }            return s.ToUpper();        }        public static string RSAEncrypt(string Modulus, string Exponent, string content)        {            var param = new RSAParameters();            param.Exponent = GetBytes(Exponent);            param.Modulus = GetBytes(Modulus);            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();            rsa.ImportParameters(param);            int CellLength = new BigInteger(param.Modulus).bitCount() / 8;            byte[] bInput = Encoding.UTF8.GetBytes(content);            int MaxLength = CellLength - 11;            int GroupLength = (int)Math.Ceiling(bInput.Length * 1.00 / MaxLength);            byte[] cipherText = new byte[GroupLength * CellLength];            for (int i = 0; i < GroupLength; i++)            {                int len = MaxLength < bInput.Length - MaxLength * i ? MaxLength                        : bInput.Length - MaxLength * i;                byte[] inByte = new byte[len];                Buffer.BlockCopy(bInput, MaxLength * i, inByte, 0, len);                byte[] temp = rsa.Encrypt(inByte, false);                Buffer.BlockCopy(temp, 0, cipherText, i * CellLength, CellLength);            }            //cipherText = rsa.Encrypt(bInput, false);            //return Convert.ToBase64String(cipherText);            //return toHex(cipherText);            return BitConverter.ToString(cipherText).Replace("-", "");        }        #endregion

 

RSA 加解密