winform 加密 解密

界面显示:

加密:

解密:

代码实现:

public string EncryptString(string str)

{

#region 加密程序

char[] Base64Code = new char[] { ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘, ‘h‘, ‘i‘, ‘j‘, ‘k‘, ‘l‘, ‘m‘, ‘n‘, ‘o‘, ‘p‘, ‘q‘, ‘r‘, ‘s‘, ‘t‘, ‘u‘, ‘v‘, ‘w‘, ‘x‘, ‘y‘, ‘z‘, ‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘, ‘G‘, ‘H‘, ‘I‘, ‘J‘, ‘K‘, ‘L‘, ‘M‘, ‘N‘, ‘O‘, ‘P‘, ‘Q‘,
‘R‘, ‘S‘, ‘T‘, ‘U‘, ‘V‘, ‘W‘, ‘X‘, ‘Y‘, ‘Z‘, ‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘, ‘+‘, ‘/‘, ‘=‘ };

byte empty = (byte)0;

System.Collections.ArrayList byteMessage = new System.Collections.ArrayList(System.Text.Encoding.Default.GetBytes(str));

System.Text.StringBuilder outmessage;

int messageLen = byteMessage.Count;

int page = messageLen / 3;

int use = 0;

if ((use = messageLen % 3) > 0)

{

for (int i = 0; i < 3 - use; i++)

byteMessage.Add(empty);

page++;

}

outmessage = new System.Text.StringBuilder(page * 4);

for (int i = 0; i < page; i++)

{

byte[] instr = new byte[3];

instr[0] = (byte)byteMessage[i * 3];

instr[1] = (byte)byteMessage[i * 3 + 1];

instr[2] = (byte)byteMessage[i * 3 + 2];

int[] outstr = new int[4];

outstr[0] = instr[0] >> 2;

outstr[1] = ((instr[0] & 0x03) << 4) ^ (instr[1] >> 4);

if (!instr[1].Equals(empty))

outstr[2] = ((instr[1] & 0x0f) << 2) ^ (instr[2] >> 6);

else

outstr[2] = 64;

if (!instr[2].Equals(empty))

outstr[3] = (instr[2] & 0x3f);

else

outstr[3] = 64;

outmessage.Append(Base64Code[outstr[0]]);

outmessage.Append(Base64Code[outstr[1]]);

outmessage.Append(Base64Code[outstr[2]]);

outmessage.Append(Base64Code[outstr[3]]);

}

return outmessage.ToString();

#endregion

}

private void btnEncrypt_Click(object sender, EventArgs e)

{

#region 加密按钮

try

{

txtMiWen.Text = EncryptString(txtMingWen.Text);

}

catch

{

MessageBox.Show("明文(密文)有误!", System.Windows.Forms.Application.ProductName);

txtMiWen.Text = "";

return;

}

#endregion

}

public string DecryptString(string str)

{

#region 解密程序

if ((str.Length % 4) != 0)

{

throw new ArgumentException("不是正确的BASE64编码,请检查。", "str");

}

if (!System.Text.RegularExpressions.Regex.IsMatch(str, "^[A-Z0-9/+=]*$", System.Text.RegularExpressions.RegexOptions.IgnoreCase))

{

throw new ArgumentException("包含不正确的BASE64编码,请检查。", "str");

}

string Base64Code = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=";

int page = str.Length / 4;

System.Collections.ArrayList outMessage = new System.Collections.ArrayList(page * 3);

char[] message = str.ToCharArray();

for (int i = 0; i < page; i++)

{

byte[] instr = new byte[4];

instr[0] = (byte)Base64Code.IndexOf(message[i * 4]);

instr[1] = (byte)Base64Code.IndexOf(message[i * 4 + 1]);

instr[2] = (byte)Base64Code.IndexOf(message[i * 4 + 2]);

instr[3] = (byte)Base64Code.IndexOf(message[i * 4 + 3]);

byte[] outstr = new byte[3];

outstr[0] = (byte)((instr[0] << 2) ^ ((instr[1] & 0x30) >> 4));

if (instr[2] != 64)

{

outstr[1] = (byte)((instr[1] << 4) ^ ((instr[2] & 0x3c) >> 2));

}

else

{

outstr[2] = 0;

}

if (instr[3] != 64)

{

outstr[2] = (byte)((instr[2] << 6) ^ instr[3]);

}

else

{

outstr[2] = 0;

}

outMessage.Add(outstr[0]);

if (outstr[1] != 0)

outMessage.Add(outstr[1]);

if (outstr[2] != 0)

outMessage.Add(outstr[2]);

}

byte[] outbyte = (byte[])outMessage.ToArray(Type.GetType("System.Byte"));

return System.Text.Encoding.Default.GetString(outbyte);

#endregion

}

private void btnDecrypt_Click(object sender, EventArgs e)

{

#region 解密按钮

try

{

txtMiWen.Text = DecryptString(txtMingWen.Text);

}

catch

{

MessageBox.Show("明文(密文)有误", System.Windows.Forms.Application.ProductName);

txtMiWen.Text = "";

return;

}

#endregion

}

winform 加密 解密,布布扣,bubuko.com

时间: 2024-11-13 23:20:58

winform 加密 解密的相关文章

winform 配置文件的加密解密

winform 配置文件的加密解密Visual Studio 命令提示(2010) 窗口下直接输入 :解密aspnet_regiis -pdf connectionStrings 程序文件夹全目录 加密aspnet_regiis -pef connectionStrings 程序文件夹全目录 注意:加密解密过程中必须把配置文件名称改为web.config程序运行一定要改回来App.cong 也可以通过运行CMD切换到命令提示符下,进入到C:\WINDOWS\Microsoft.net\Frame

.net实现md5加密 sha1加密 sha256加密 sha384加密 sha512加密 des加密解密

写项目时,后台一直用md5加密,一天群里人问,除了MD5还有其它的加密方法吗?当时只知道还有个SHA,但怎么实现什么的都不清楚,于是当网上找了下,把几种常见的加密方法都整理了下,用winform写了个程序,如图: 关键代码 using System.Security;using System.Security.Cryptography;using System.Web;using System.IO; //MD5 不区分大小写的        //type 类型,16位还是32位,16位就是取3

AJAX+REA实现前后台数据交互的加密解密

AJAX+REA实现前后台数据交互的加密解密 1.创建js文件Encryption.js /**  * 加密解密  */ /** RSA加密用 生成key */ function bodyRSA(){ /** 1024位的key参数写130,2014位的key参数写260 */ setMaxDigits(130); /** ajax 调用后台方法,取回公钥 */ var keyR ;     $.ajax({      url: "/GHGL/Key/pk",//请求后台的url,本例

加密解密过程

1,首先来说说有关加密解密有关的信息 信息安全标准NIST(National Institute of Standards and Technology)美国国家标准与技术研究院 openssl有CIA C:保密性: 数据保密性 隐私性 A:完整性: 数据完整性 系统完整性 I:可用性 真实性:一个实体是真实的,可被验证的. 可追溯性:一旦被攻击,能够追溯攻击源在哪 2,OSI规定的X.800 1)安全攻击: 被动攻击:窃听 主动攻击:1,伪装 2,重播 3,消息修改 4,拒绝攻击等 2)安全服

加密解密

在现代密码学中,加密方法大致可分为对称密钥加密(对称加密)和公开密钥加密(非对称加密). 一. 对称加密(Symmetric-key algorithm,或对等加密: Reciprocal cipher ) 对称加密,即加密和解密使用同一个密钥,或者知道一方密钥能够轻易计算出另一方密钥.其解密(decryption)算法等同于加密算法,也就是说,要还原对等加密的密文,套用加密同样的算法即可得到明文. 对称加密的速度比非对称加密快很多,在很多场合都需要对称加密. 对称加密又可分为分组密码(分组加密

C/C++使用openssl进行摘要和加密解密(md5, sha256, des, rsa)

openssl里面有很多用于摘要哈希.加密解密的算法,方便集成于工程项目,被广泛应用于网络报文中的安全传输和认证.下面以md5,sha256,des,rsa几个典型的api简单使用作为例子. 算法介绍 md5:https://en.wikipedia.org/wiki/MD5 sha256:https://en.wikipedia.org/wiki/SHA-2 des: https://en.wikipedia.org/wiki/Data_Encryption_Standard rsa: htt

c#中base64加密解密

using System; using System.Text; namespace Common { /// <summary> /// 实现Base64加密解密 /// </summary> public sealed class Base64 { /// <summary> /// Base64加密 /// </summary> /// <param name="codeName">加密采用的编码方式</param

C#DES加密解密字符串

1.添加引用 using System.Security.Cryptography; using System.IO; 2.添加默认密匙向量 //默认密钥向量 private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; 3.添加加密解密类 /// <summary> /// DES加密字符串 /// </summary> /// <param name="encry

Discuz论坛写出的php加密解密处理类(代码+使用方法)

PHP加密解密也是常有的事,最近在弄相关的东西,发现discuz论坛里的PHP加密解密处理类代码,感觉挺不错,在用的时候,要参考Discuz论坛的passport相关函数,后面我会附上使用方法,先把类代码帖上来: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 <?php /*