public void CipherRsa復号失敗()
        {
            const string input = "abcdefg";

            var rsa = new CipherRsa("alltest");
            var privateKey = rsa.PrivateKey;
            var enc1 = rsa.Encrypt(input);

            rsa.DeleteKeyContainer();

            var rsa2 = new CipherRsa("alltest");
            var enc2 = rsa2.Encrypt(input);

            var plain1 = CipherRsa.Decrypt(enc1, privateKey);
            Assert.AreEqual(input, plain1);

            var plain2 = CipherRsa.Decrypt(enc2, privateKey); //コンテナ削除前のprivateKeyでは例外が発生する。
        }
        public void CipherRsa全体確認()
        {
            const string input = "abcdefg";

            var rsa = new CipherRsa("alltest");
            var publicKey = rsa.PublicKey;
            var privateKey = rsa.PrivateKey;

            var enc1 = rsa.Encrypt(input);
            var enc2 = rsa.Encrypt(input);
            var enc3 = CipherRsa.Encrypt(input, publicKey);
            var enc4 = CipherRsa.Encrypt(input, publicKey);
            Assert.AreNotEqual(enc1, enc2);
            Assert.AreNotEqual(enc3, enc4);
            Assert.AreNotEqual(enc1, enc3);    //暗号文はすべて異なる値になる。

            var plain1 = rsa.Decrypt(enc1);
            var plain2 = CipherRsa.Decrypt(enc1,privateKey);
            var plain3 = rsa.Decrypt(enc3);
            var plain4 = CipherRsa.Decrypt(enc3, privateKey);
            Assert.AreEqual(input, plain1);
            Assert.AreEqual(input, plain2);
            Assert.AreEqual(input, plain3);
            Assert.AreEqual(input, plain4);

            var rsa2 = new CipherRsa("alltest");
            var enc5 = rsa2.Encrypt(input);
            var plain5 = CipherRsa.Decrypt(enc5, privateKey); //rsa2ではないrsaのprivateKeyで復号
            Assert.AreEqual(input, plain5);
            
            rsa.DeleteKeyContainer();   //コンテナ削除

            var rsa3 = new CipherRsa("alltest");
            var enc6 = rsa3.Encrypt(input);

            var plain6 = CipherRsa.Decrypt(enc5, privateKey); //rsa2ではないrsaのprivateKeyで復号   //コンテナ削除した後も復号可能
            //var plain7 = CipherRsa.Decrypt(enc6, privateKey); //rsa2ではないrsaのprivateKeyで復号   //例外発生
            Assert.AreEqual(input, plain6);
            //Assert.AreEqual(input, plain7);
            
            rsa3.DeleteKeyContainer();
        }
Exemple #3
0
        public bool Update()
        {
            var updated = false;

            if (this.SettingVersion == 1)
            {
                this.LogLevel = Log.Level.None;
                this.SettingVersion = 2;
                updated = true;
            }

            if (!string.IsNullOrEmpty(this.ProxyPassword) && string.IsNullOrEmpty(this.EncryptedProxyPassword))
            {
                var rsa = new CipherRsa(this.KeyContainerName);
                this.EncryptedProxyPassword = rsa.Encrypt(this.ProxyPassword);
                this.ProxyPassword = string.Empty;
                updated = true;
            }

            return updated;
        }