ASP.NET RSA暗号化
21567 ワード
RSA暗号化は皆さんもよく知られていると思います.MD 5暗号化も暗号化の手段ですが、MD 5暗号化は一方向暗号化であり、復号できません.場合によっては不便なので、今日はMSDNでRSA暗号化を認識する例を探しました.
1.まずフロントエンドコード
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
2.バックグラウンドコード
説明:初めてのRSA暗号化に加えてC#ベースがあまり良くないため、かなり苦労しているように見えますので、コメントをたくさんつけました.暗号化と解を1つのクラスに単独で書くことができ、呼び出すのに便利ですが、暗号化やユーザー名などに使用したい場合は、設計時に十分な長さを残す必要があります.
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
1.まずフロントエンドコード
1: <table style="font-family: Calibri; width: 100%">
2: <tr>
3: <td>
4: <asp:Label ID="lbwords" runat="server" Text="Enter Some Words:"></asp:Label>
5: </td>
6: <td colspan="3">
7: <asp:TextBox ID="tbData" runat="server" Width="300px"></asp:TextBox>
8: </td>
9: </tr>
10: <tr>
11: <td>
12: <asp:Label ID="lbEncryptData" runat="server" Text="Encrypted Data:"></asp:Label>
13: </td>
14: <td>
15: <asp:Button ID="btnEncrypt" runat="server" Text="Encrypt it" OnClick="Encrypt_Click"
16: Height="30px" Width="90px" />
17: <br />
18: <asp:TextBox ID="tbEncryptData" runat="server" TextMode="MultiLine" Height="200px"
19: Width="400px" ReadOnly="true"></asp:TextBox>
20: <br />
21: </td>
22: <td>
23: <asp:Label ID="lbDecryptedData" runat="server" Text="Decrypted Data:"></asp:Label>
24: </td>
25: <td>
26: <asp:Button ID="btnDecrypt" runat="server" Text="Decrypt it" OnClick="Decrypt_Click"
27: Height="30px" Width="90px" />
28: <br />
29: <asp:TextBox ID="tbDecryptData" runat="server" TextMode="MultiLine" Height="200px"
30: Width="400px" ReadOnly="true"></asp:TextBox>
31: <br />
32: </td>
33: </tr>
34: </table>
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
2.バックグラウンドコード
説明:初めてのRSA暗号化に加えてC#ベースがあまり良くないため、かなり苦労しているように見えますので、コメントをたくさんつけました.暗号化と解を1つのクラスに単独で書くことができ、呼び出すのに便利ですが、暗号化やユーザー名などに使用したい場合は、設計時に十分な長さを残す必要があります.
1: protected void Page_Load(object sender, EventArgs e)
2: {
3: AddKeyUpEventOnTextControl();
4: //1.PreRender System.Web.UI.Control 、 。
5: //2. btn.Decrypt PreRender btnDecrypt_PreRender ( )
6: this.btnDecrypt.PreRender += new EventHandler(btnDecrypt_PreRender);
7: this.btnEncrypt.PreRender += new EventHandler(btnEncrypt_PreRender);
8: }
9:
10: private void RSAEncryption()
11: {
12:
13: //3.CspParameters (CSP) 。 。
14: CspParameters param = new CspParameters();
15: //4. KeyContainerName System.Security.Cryptography.CspParameters 。
16: param.KeyContainerName = "MyKeyContainer";
17: //5. (CSP) System.Security.Cryptography.RSA
18: using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(param))
19: {
20: string plaintext = this.tbData.Text;
21: byte[] plaindata = System.Text.Encoding.Default.GetBytes(plaintext);
22: //6. true, OAEP ( Microsoft Windows XP )
23: //System.Security.Cryptography.RSA ; , false, PKCS#1 1.5 。
24: byte[] encryptdata = rsa.Encrypt(plaindata, false);
25: // 7. 8 Base64
26: string encryptstring = Convert.ToBase64String(encryptdata);// 128
27: this.tbEncryptData.Text = encryptstring;
28: }
29: }
30:
31: private void RSADecryption()
32: {
33: CspParameters param = new CspParameters();
34: param.KeyContainerName = "MyKeyContainer";
35: using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(param))
36: {
37: //8. ( Base64 ) 8
38: byte[] encryptdata = Convert.FromBase64String(this.tbEncryptData.Text);
39: //9. System.Security.Cryptography.RSA 。
40: byte[] decryptdata = rsa.Decrypt(encryptdata, false);
41: string plaindata = System.Text.Encoding.Default.GetString(decryptdata);
42: this.tbDecryptData.Text = plaindata;
43: }
44: }
45:
46: protected void Encrypt_Click(object sender, EventArgs e)
47: {
48: RSAEncryption();
49: }
50:
51: protected void Decrypt_Click(object sender, EventArgs e)
52: {
53: RSADecryption();
54: }
55:
56: void btnDecrypt_PreRender(object sender, EventArgs e)
57: {
58: EnableDecryptButton();
59: }
60:
61: void btnEncrypt_PreRender(object sender, EventArgs e)
62: {
63: EnableEncryptButton();
64: }
65:
66: private void AddKeyUpEventOnTextControl()
67: {
68: string script = string.Format(@"function PressFn(sender) {{
69: document.getElementById('{0}').disabled = sender.value == '' ? true : false;
70: }}", btnEncrypt.ClientID);
71: tbData.Attributes["onkeyup"] = "PressFn(this)";
72: Page.ClientScript.RegisterStartupScript(this.GetType(), "DataKeyUp", script, true);
73: }
74:
75: /// <summary>
76: ///
77: /// </summary>
78: private void EnableDecryptButton()
79: {
80: btnDecrypt.Enabled = this.tbEncryptData.Text != string.Empty ? true : false;
81: // , if...else...
82: }
83:
84: /// <summary>
85: ///
86: /// </summary>
87: private void EnableEncryptButton()
88: {
89: btnEncrypt.Enabled = this.tbData.Text != string.Empty ? true : false;
90: }
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }