⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keyfile.txt

📁 用C#处理数字证书 使用System.Security.Cryptography.X509Certificate名称空间 System.Security.Cryptography.X509Ce
💻 TXT
字号:
用C#处理数字证书



使用System.Security.Cryptography.X509Certificate名称空间

System.Security.Cryptography.X509Certificate名称空间特别重要,因为它提供了开发人员处理数字签名的那些类.
以下是读取一个X.509证书的代码:
private void btnTest_Click(object sender,System.EventArgs e)
{
	String CertPath;                      //Cerificate path
	X509Certificate MyCert;               //The certificate 
	StringBuilder CertData;               //Certificate information to display
//Create the certificate path string 
	Certpath=Application.ExecutablePath;
	CertPath=CertPath.Substring(0,CertPath.LastIndexOf(@"\")+1)+"1.CER";
//Load the certificate
	MyCert=X509Certificate.CreateFromCertFile(CertPath);
//Get the certificate information
	CertData=new StringBuilder();
	CertData.Append("\r\nPublic Key String: ");
	CertData.Append(MyCert.GetPublicKeyString());
//Display the information on screen 
	MessageBox.show(CertData.ToString(),"SampleCertificate Data",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
3.5使用不对称加密法
3.5.1创建一个密钥对
public frmMain()
{
String                 KeyPath;            //The location of the key
CspParameters        Params;             //Cryptographic parameters
FileStream            KeyFile;             //Key disk storage
Char[ ]                KeyData;            //Key data as a Char array
Byte[ ]                KeyConv;            //Converted key data
StringBuilder          KeyString;           //Loop counter
//Required for Windows Forms Designer support
InitializeComponent();
//Create the key string 
KeyPath=Application.ExecutablePath;
KeyPath=KeyPath.Substring(0,KeyPath.LastIndexOf(@”\”)+1)+”SpecialKey”;
//Define the cryptographic parameters
Params=new CspParameters();
Params.KeyContainName=”TemporarySpecialKey”;
Parsms.KeyNumber=1;
Parsms.ProviderName=”Microsoft RSA SChannel Cryptographic Provider”;
Params.ProviderType=12;
Params.Flags=CspProviderFlags.UseMachineKeyStore;
//Detect the presence of a key pair file
if (!File.Exists(KeyPath))
{
//Generate a key pair 
RSACrypto=new RSACryptoServiceProvider(2048,Params);
//Convert the key data for storage
KeyData=RSACrypto.ToXmlString(True).ToCharArray();
KeyConv=new Byte[KeyData.Length];
For (Counter=0;Counter<KeyData.Length;Counter++)
KeyConv[Counter]=Convert.ToByte(KeyData[Counter]);
//Save the key to file 
KeyFile=File.Open(KeyPath,FileMode.CreateNew);
KeyFile.Write(KeyConv, 0,RSACrypto.ToXmlString(true).Length);
KeyFile.Close();
}
else 
{
//Open the key file for reading
KeyFile=File.Open(KeyPath,FileMode.Open);
KeyConv=new Byte[KeyFile.Length];
KeyFile.Read(KeyConv,0,(Int32)KeyFile.Length);
KeyFile.Close();
//Convert the key file 
KeyString=new StringBuilder(KeyConv.Length);
For (Counter=0;Counter<KeyConv.Length;Counter++)
  KeyString.Append(Convert.ToChar(KeyConv[Counter]));
//Create the key 
RSACrypto= new RSACryptoServiceProvider(2048,Params);
RSACrypto.FromXmlString(KeyString.ToString());]
}
}



使用不对称加密加密与解密数据
private RSACryptServiceProvider RSACrypto;         //the key pair
private void btnEncrypt_Click(object sender,system.EventArgs e)
{
FileStream       FIn;           //Input file
FileStream       Fout;          //Output file
Byte[ ]           InData;        //Input buffer
Byte[ ]           OutData;       //Output buffer
Int              Counter=0;     //Total convert counter
Int              ReaderByte=0;  //Currently read counter
//Open the input and output files
Fin=new FileStream(txtInput.Text,FileMode.Open,FileAccess.Read);
Fout=new FileStream(txtEncrypt.Text,FileMode.OpenOrCreate,FileAccess.Write); 
//Initialize the buffers
InData=new Byte[100];
OutData=new Byte[256];
//Encrypt the file 
while(Counter<Fin.Length)
{
//Determine if we’re encrypting a partial packet
if ((Fin.Length-Counter)<100)
{
//if so ,create a small encryption value
InData=new Byte[Fin.Length-Counter];
ReadByte=Fin.Read(InData,0,(Int32)(Fin.Length-Counter));
}
else 
//otherwise,create a full encryption value
ReadByte=FIn.Read(InData,0,100);
//output the encrypted data
OutData=RSACrypt.Encrypt(InData.false);
FOut.Write(OutData,0,OutData.Length);
Counter=Counter+ReadByte;
}
//close the open stream and file
FIn.Close();
Fout.Close();
}
以上就是应用Visual C# .NET开发工具解决读取X.509证书的公钥,并且利用公钥加密文件,实现对文件的访问控制.以上程序在WINDOWS XP ,MICROSOFT VISUAL C# .NET系统上调试通过.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -