TLSharp.Core.MTProto.Crypto.RSAServerKey.Encrypt C# (CSharp) Method

Encrypt() public method

public Encrypt ( byte data, int offset, int length ) : byte[]
data byte
offset int
length int
return byte[]
        public byte[] Encrypt(byte[] data, int offset, int length)
        {
            using (MemoryStream buffer = new MemoryStream(255))
            using (BinaryWriter writer = new BinaryWriter(buffer))
            {
                using (SHA1 sha1 = new SHA1Managed())
                {
                    byte[] hashsum = sha1.ComputeHash(data, offset, length);
                    writer.Write(hashsum);
                }

                buffer.Write(data, offset, length);
                if (length < 235)
                {
                    byte[] padding = new byte[235 - length];
                    new Random().NextBytes(padding);
                    buffer.Write(padding, 0, padding.Length);
                }

                byte[] ciphertext = new BigInteger(1, buffer.ToArray()).ModPow(e, m).ToByteArrayUnsigned();

                if (ciphertext.Length == 256)
                {
                    return ciphertext;
                }
                else {
                    byte[] paddedCiphertext = new byte[256];
                    int padding = 256 - ciphertext.Length;
                    for (int i = 0; i < padding; i++)
                    {
                        paddedCiphertext[i] = 0;
                    }
                    ciphertext.CopyTo(paddedCiphertext, padding);
                    return paddedCiphertext;
                }
            }
        }

Usage Example

Exemplo n.º 1
0
        public static byte[] Encrypt(string fingerprint, byte[] data, int offset, int length)
        {
            string fingerprintLower = fingerprint.ToLower();

            if (!serverKeys.ContainsKey(fingerprintLower))
            {
                return(null);
            }

            RSAServerKey key = serverKeys[fingerprintLower];

            return(key.Encrypt(data, offset, length));
        }