예제 #1
0
        /// <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;
        }
예제 #2
0
 /// <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;
 }