Esempio n. 1
0
        public static FileMessage DecryptFile(this CipheredFileMessage cipheredFileMessage, KeyFactory keyFactory)
        {
            var c1   = cipheredFileMessage.HashC1 ?? throw new NullReferenceException();
            var c2   = cipheredFileMessage.HashC2 ?? throw new NullReferenceException();
            var keyA = keyFactory?.PrivateKeyA?.KeyValue ?? throw new NullReferenceException();
            var keyP = keyFactory?.PublicKeyP?.KeyValue ?? throw new NullReferenceException();


            var        fileMessage      = new FileMessage();
            BigInteger DecryptedFileNum = new BigInteger(0);
            BigInteger bufferC1         = new BigInteger(c1);
            BigInteger bufferC2         = new BigInteger(c2);

            DecryptedFileNum = (bufferC2 * 1 / bufferC1.modPow(keyA, keyP));
            fileMessage.Hash = DecryptedFileNum.getBytes().ToArray();
            return(fileMessage);
        }
Esempio n. 2
0
        public static CipheredFileMessage EncryptFile(this FileMessage stringMessage, KeyFactory keyFactory)
        {
            var hash = stringMessage.Hash ?? throw new NullReferenceException();
            var keyP = keyFactory?.PublicKeyP?.KeyValue ?? throw new NullReferenceException();
            var keyG = keyFactory?.PublicKeyG?.KeyValue ?? throw new NullReferenceException();
            var keyA = keyFactory?.PrivateKeyA?.KeyValue ?? throw new NullReferenceException();
            var keyH = keyFactory?.PublicKeyH?.KeyValue ?? throw new NullReferenceException();
            var keyR = keyFactory?.RandomKeyR?.KeyValue ?? throw new NullReferenceException();

            var cipheredFileMessage    = new CipheredFileMessage();
            var CipheredSFileMessageC1 = new BigInteger(0);
            var CipheredSFileMessageC2 = new BigInteger(0);


            BigInteger buffer = new BigInteger(hash);

            cipheredFileMessage.HashC1 = (keyG.modPow(keyR, keyP))
                                         .getBytes();
            cipheredFileMessage.HashC2 = (buffer * keyH.modPow(keyR, keyP))
                                         .getBytes();
            return(cipheredFileMessage);
        }