/// <summary> /// Простое шифрование RSA (r^e mod m) /// </summary> /// <param name="data"></param> /// <returns></returns> private byte[] RSAEncrypt(byte[] data) { const string rsaModulus = "C150023E2F70DB7985DED064759CFECF0AF328E69A41DAF4D6F01B538135A6F91F8F8B2A0EC9BA9720CE352EFCF6C5680FFC424BD634864902DE0B4BD6D49F4E580230E3AE97D95C8B19442B3C0A10D8F5633FECEDD6926A7F6DAB0DDB7D457F9EA81B8465FCD6FFFEED114011DF91C059CAEDAF97625F6C96ECC74725556934EF781D866B34F011FCE4D835A090196E9A5F0E4449AF7EB697DDB9076494CA5F81104A305B6DD27665722C46B60E5DF680FB16B210607EF217652E60236C255F6A28315F4083A96791D7214BF64C1DF4FD0DB1944FB26A2A57031B32EEE64AD15A8BA68885CDE74A5BFC920F6ABF59BA5C75506373E7130F9042DA922179251F"; const string rsaExponent = "010001"; // HACK: адок var m = new BigInteger(BinaryHelper.StringToByteArray(rsaModulus)); var e = new BigInteger(BinaryHelper.StringToByteArray(rsaExponent)); var r = new BigInteger(data); BigInteger s = r.ModPow(e, m); byte[] temp = s.GetBytes(); return temp; }
/// <summary> /// Extracts secret information from the key exchange data. /// </summary> /// <param name="keyEx">The key exchange data within which the shared key is hidden.</param> /// <returns>The shared key derived from the key exchange data.</returns> public override byte[] DecryptKeyExchange(byte[] keyEx) { var pvr = new BigInteger(keyEx); BigInteger z = pvr.ModPow(m_X, m_P); byte[] ret = z.GetBytes(); z.Clear(); return ret; }