首页 > 代码库 > 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 加解密
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。