加密
// create an instance of the library PGPLib pgp = new PGPLib(); // Import the main company public key pgp.AddMasterKey(@"xx.asc"); // after the encryption the output file will be encrypted with two keys pgp.EncryptFile(@"input.txt", @"xx.asc", @"input.txt.pgp"); MessageBox.Show("杀杀杀");
解密
// initialize the library PGPLib pgp = new PGPLib(); string inputFileLocation = @"input.txt.pgp"; string privateKeyLocation = @"pv.asc"; string privateKeyPassword = "6446-"; string decryptedOutput = @"input2.txt"; try { string originalFileName = pgp.DecryptFile(inputFileLocation, privateKeyLocation, privateKeyPassword, decryptedOutput); Console.WriteLine("File decrypted to :" + decryptedOutput); Console.WriteLine("The original file name of the decrypted file was :" + originalFileName); } catch (PGPException e) { if (e is NonPGPDataException) { Console.WriteLine("The input file is not an OpenPGP archive or is corrupted"); } else if (e is WrongPrivateKeyException) { // The message cannot be decrypted with this private key // or the supplied private key is not an OpenPGP private key or is corrupted Console.WriteLine(e.Message); } else if (e is WrongPasswordException) { Console.WriteLine("The password for the private key is incorrect"); } else if (e is FileIsPBEEncryptedException) { Console.WriteLine("The input file is password encrypted."); Console.WriteLine("You have to use DecryptAndVeifyFilePBE or DecryptAndVerifyStreamPBE"); } else if (e is IntegrityCheckException) { Console.WriteLine("The encrypted data is corrupted"); } else { Console.WriteLine(e.Message); } }
EnryptFileToExe
// initialize the SFX generator class SfxCreator sfx = new SfxCreator(); // encrypt the data file and create an executable sfx.EnryptFileToExe(@"input2.txt", "644611", @"input2.exe");
key.store
// initialize the KeyStore // If the keystore file does not exists, it is created. KeyStore ks = new KeyStore(@"key.store", "changeit"); String userId = "support@didisoft.com"; if (!ks.ContainsKey(userId)) { // Generate RSA based OpenPGP key with predefined parameters; // for more customized generation see GenerateKeypairRSA.cs // (Note: the predefined key parameters here are the same as in PGP Desktop version 10) ks.GenerateKeyPair(2048, "support@didisoft.com", "changeit"); } ks.ExportPublicKey("mypb.txt", userId, true); ks.ExportPrivateKey("mypv.txt", userId, true); MessageBox.Show("ok");
加
// create an instance of the library PGPLib pgp = new PGPLib(); // Import the main company public key // pgp.AddMasterKey(@"xx.asc"); // after the encryption the output file will be encrypted with two keys pgp.EncryptFile(@"input.txt", @"mypb.txt", @"input_ks.txt.pgp"); MessageBox.Show("杀杀杀");
解
// create an instance of the library PGPLib pgp = new PGPLib(); //pgp.DecryptFile(@"input_ks.txt.pgp", @"mypv.txt", "changeit", @"input_ks.txt"); KeyStore ks = new KeyStore(@"key.store", "changeit"); pgp.DecryptFile(@"input_ks.txt.pgp",ks, "changeit", @"input_ks.txt"); MessageBox.Show("杀杀杀");
OpenPGP Library v.1.7
http://www.winsite.com/Development/Components-Libraries/OpenPGP-Library-for-NET/
http://bbs.csdn.net/topics/390267637
Bin】下的【BouncyCastle.CryptoExt.dll】和【DidiSoft.Pgp.dll】引用到项目中,就可以很方便的在C#中使用PGP加解密了。
https://www.didisoft.com/net-openpgp/examples/decrypt-and-verify/
https://www.didisoft.com/net-openpgp/
https://www.componentsource.com/product/openpgp-library-for-dotnet
http://www.pgp.cn/index.htm