示例#1
0
        public byte[] OaepEncrypt(byte[] data, TpmAlgId hashAlg, byte[] encodingParms)
        {
            if (data.Length == 0)
            {
                throw new ArgumentException("");
            }
            int encLen = NumBits / 8;

            byte[]     zeroTermEncoding = GetLabel(encodingParms);
            byte[]     encoded          = CryptoEncoders.OaepEncode(data, zeroTermEncoding, hashAlg, encLen);
            BigInteger message          = FromBigEndian(encoded);
            BigInteger cipher           = BigInteger.ModPow(message, E, N);

            byte[] encMessageBigEnd = ToBigEndian(cipher, KeySize);
            return(encMessageBigEnd);
        }
示例#2
0
        public byte[] OaepEncrypt(byte[] data, TpmAlgId hashAlg, byte[] encodingParms)
        {
            int encLen = NumBits / 8;

            byte[]     zeroTermEncoding = GetLabel(encodingParms);
            byte[]     encoded          = CryptoEncoders.OaepEncode(data, zeroTermEncoding, hashAlg, encLen);
            BigInteger message          = FromBigEndian(encoded);
            BigInteger cipher           = BigInteger.ModPow(message, E, N);

            byte[] encMessageBigEnd = ToBigEndian(cipher, KeySize);
            if (encMessageBigEnd.Length < encLen)
            {
                encMessageBigEnd = Globs.AddZeroToBeginning(encMessageBigEnd, encLen - encMessageBigEnd.Length);
            }
            return(encMessageBigEnd);
        }