`
touchinsert
  • 浏览: 1287815 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

自定义对1到15位长度的密码加解密

 
阅读更多

示例效果 只是对1到15位长度的密码加解密

将原明文进行ASCII码的增加转换 使其成为一个长度为16的字串 变相实现加密

解密就是根据之前的转换思路 进行相关逆运算 得到原明文

有需要的朋友 可以根据思路进行相关扩充

以使其符合自已的需要

#region 对1-15位明文加密
protected void Button1_Click(object sender, EventArgs e)
{
string strToEncrypt = this.txt_明文.Text.Trim();
this.txt_加密.Text = Encrypt(strToEncrypt);
}
#endregion

#region 解密
protected void Button2_Click(object sender, EventArgs e)
{
string strToDecrypt = this.txt_加密.Text.Trim();
this.txt_解密.Text = Decrypt(strToDecrypt);
}
#endregion

int intA = 11;
int intB = 19;

#region 加密 返回加密后的字串
private string Encrypt(string strToEncrypt)
{
//先对原明文的长度进行相关判断 使其符合1-15这个范围
string strEncrypted = "";
//利用原明文长度 将其做为加密后密码的第1位
strEncrypted += (char)(Convert.ToString(strToEncrypt.Length, 16)[0] - intA);
//
for (int i = 0; i < strToEncrypt.Length; i++)
{
//32-126
int intNewChar = strToEncrypt[i] + intB;
if (intNewChar > 126)
{
intNewChar = intNewChar - 127 + 32;
}
strEncrypted += Convert.ToChar(intNewChar).ToString();
}

if (strEncrypted.Length < 16)
{
string strEncrypted2 = "";
string strTemp = Guid.NewGuid().ToString().Substring(0, (16 - strEncrypted.Length));
//
for (int j = 0; j < strTemp.Length; j++)
{
if (j < strEncrypted.Length)
strEncrypted2 += strEncrypted[j].ToString();
strEncrypted2 += strTemp[j].ToString();
}
if (strTemp.Length < strEncrypted.Length)
strEncrypted2 += strEncrypted.Substring(strTemp.Length);

strEncrypted = strEncrypted2;
}
//返回加密后字串
return strEncrypted;
}
#endregion

#region 解密 返回解密后的字串
private string Decrypt(string strToDecrypt)
{
string strLength = Convert.ToString((char)(strToDecrypt[0] + intA));
int intPwdLength = Convert.ToInt32(strLength, 16);
string strDecrypted = "";
for (int i = 1; i < strToDecrypt.Length; i++)
{
//32-126
int intOldChar = strToDecrypt[i] - intB;
if (intOldChar < 32)
{
intOldChar = intOldChar - 32 + 127;
}
strDecrypted += Convert.ToChar(intOldChar).ToString();
}

string strDecrypted2 = "";
for (int j = 1; j < strDecrypted.Length; j = j + 2)
{
strDecrypted2 += strDecrypted[j].ToString();
}
//
if (intPwdLength < 8)
{
strDecrypted = strDecrypted2.Substring(0, intPwdLength);
}
else
{
strDecrypted = strDecrypted2.Substring(0, 15 - intPwdLength) + strDecrypted.Substring((15 - intPwdLength) * 2);
}
//返回解密后字串
return strDecrypted;
}
#endregion

分享到:
评论

相关推荐

    c# 加密和解密相关代码

    对比两个二进制的值,从右向左按位对比,如果两个二进制数的相应位都为1 或两个二 进制数的相应位都为0,则返回0;如果两个二进制数的相应位中一个为1 一个为0,则返回1,最后得到的结 果为二进制值11000,该值转换...

    多功能AES加密与解密软件(含帮助文档)

    一、本软件的相关介绍: 本软件是由梦幻卫士团队编写完成,期间得到了李文喜老师与秦永彬老师的极...提供此功能后,用户在加解密文件时就无需先运行本软件,而是可以通过快捷菜单来自动关联加载运行,使操作更加便利。

    我整理的VBA 自定义函数大全 共138页

    127.对指定文件加XLS加密 128.选择指定范围内使用了填充颜色的单元格 129.在特定的区域内查找文本,返回值是包含查找文本的单元格 130.返回特定区域中最大值的地址 131.删除表格中使用范围内的所有空白单元格 132....

    解密加密可加密各种文件和文本

    可解密加密任何二进制文本文件(意思是几乎可以加密任何文件),输入自定义密码,经过16次修改,加入各种锁相,密码长度可达30位,必须输入公共密钥才能打开和解码文件,类似英格玛加密,并且压缩占用空间也达到极致...

    aws-lambda-aes:用于 AES 加密解密的 Lambda 函数

    用作密钥的密码opts :包含密码选项的可选对象length :密钥长度来使用的一个128 , 192 ,或256 mode :支持的模式有cbc 、 cfb 、 cfb1 、 cfb8 、 ctr 、 ecb 、 gcm和ofb encoding : 是否编码为base64或hex ...

    小密加密播放器 v2.0.zip

    小密提供的视频加密工具,使用流式加密技术,密码长度可以变长。同时密码技术与随机密钥相结合,进行视频加密。因此同一个视频文件、同一个密码,加密出来的文件也是完全不一样的,彻底解决密码安全问题。 小密...

    excel中161个VBA_自定义函数超级实用

    函数作用:18位身份证最后一位有效性验证............70 '49.函数作用:计算符合maturity condition的拆解金额....72 '50.函数作用:对多个用同一分隔符分隔的待查找元素,逐一在表区域首列内搜索,将返回选定单元格的...

    BilleniumSoft.Citadel.v1.5.for.Delphi.Cracked

    BilleniumSoft Citadel能够压缩可执行文件体积,对dfm文件加密,自定义的DFM pack格式能除去多余的信息. Use included patch to change crypt password to your own. Max. password length is 7 chars.包含的补丁...

    精易模块[源码] V5.15

    8、恢复“文本_加密”与“文本_解密”,把新版加解密改名为"文本_加密c"与“文本_解密c”。 MD5:5831C531ABD80ADD0EFE10172AEED71F 精易模块 V5.11 what’s new:(20150101) 1、修复“文本_取中间_批量”获取...

    rsa算法设计 密码学

    //实现加解密 unsigned long Os2ip(unsigned char* pstr); CString Ip2os(CString str); public: void GenKeys(CString& pk,CString& sk,CString& R); //提供给服务器使用的秘钥产生函数 int RsaEncrypt...

    打败所有黑客的加密算法

    或者黑客可以对其陷阱预设解密方法和密钥,一旦检测到就进行解密。所以你最好自己对信息加密! 现在问题是,黑客对你信息不能解密的放过,能够解密的再留下破解。你的信息仍然处于危险之中。于是有了我现在所说的...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例142 身份证号从15位升到18位的算法 186 实例143 歌德巴赫猜想的算法实现 187 实例144 八皇后问题的算法实现 188 实例145 百钱百鸡的算法实现 190 实例146 韩信点兵的算法实现 191 实例147 实现斐波纳契数列求和 ...

    Super-EC破解版

    ' 修改"软件类"中,"验证注册码"的参数三与"生成注册码的"参数一为字节集类型,不至于密码以文本明文出现在内存中,并将验证册码改为双向加密解密,并增加多重加解密判断,有效的提高防破解能力! ' 修改"取硬件信息码",...

    WebIM_Ajax框架

    18.js插件:输入验证(中英文长度/正则/AJAX/自定义) 19.js插件:模拟 Title 实现功能: 1.同一用户只能在一处登录; 2.好友分组列表; 3.聊天; 4.离线消息; 5.上线/下线通知; 6.日志; 7.信息编码(简单加密)...

    symmetric-key:自定义对称密钥加密算法

    根据N位位图序列中的1,从头到尾,从左到右遍历排列时,选择对应的第N个块。 在每次选择块时,块中的字符然后按字母顺序向右或向左移动,具体取决于它是奇数块还是偶数块。 ##版本键 每个版本都在自己的分支中 ...

    SuperNotepad

    22) 查看密码 (扩展对所有已打开的窗口密码均有效Ctrl+D) 23) 正则表达式处理字符 例︰"\b([a-z]+) \1\b"合并多次重复单词 24) 可设置字符内部编码 (注:分Unicdoe和ANSI两种;[设置]-&gt;[设置字符编码...

    vc++ 开发实例源码包

    详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树控件拖动 演示了在树控件中来回拖动...

Global site tag (gtag.js) - Google Analytics