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); }
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); }