Asp.net,C# 纯数字加密解密字符串

也就是说加密后的数据不再是:N8lAaHMFtSAQgaf3+RUFng==

希望encryptedString是"120387789370480938409832840923492384028934…”;
当然上面的数字是我随便乱敲的。
那么如何实现纯数字呢??
想法很简单,只要将字符变成Ascll 码就可以了。例如a:97, =:61;
那么encryptedString 就可以变成 97 81 61 33 44 55 。。。;
但是如果合在一起的话就变成了978161334455.
问题来了:我怎么知道97是a,而不是9,7 呢?
如果你知道计算机是二进制表示的话,你就应该可以想到,我们可以将97变成0,1形式。
从而上面的数字就可以变成0001 0011 011 111 001.
OK,我们还有2,3,4,5,6,7,8,9,没有使用,所以可以使用任意一个字符来分隔。
例如将上面的数字变成0001 0011 011 111 001
当然上面是可以完成数字的编码的,但是还有3,4,5,6,7,8,9都被浪费掉了,
所以在这里我们不应该选择2进制,最好应该选择9进制。什么??9进制?
对,9进制:0,1,2,3,4,5,6,7,8,10.其中10代表9,然后9作为分隔符号;
可惜的是C#代码不支持9进制,所以为了方便选择8进制了。
代码如下:
/// <summary>
/// 将字符串转换成数字字符串
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
private static string ConvertStringToNumbers(string value)
{
StringBuilder sb = new StringBuilder(); foreach (char c in value)
{
int cAscil = (int)c;
sb.Append(Convert.ToString(c, 8) + "9");
} return sb.ToString();
}
string encryptedNumberString = ConvertStringToNumbers(encryptedString);
encryptedNumberString =11697091549101914191109115910691649123
好了,已经成功的分隔了,剩下的就是从这对数字组成的字符串中重新提取字符了。
代码如下:
/// <summary>
/// 将数字字符串转换成普通字符字符串
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
private static string ConvertNumbersToString(string value)
{
string[] splitInt = value.Split(new char[] { '9' }, StringSplitOptions.RemoveEmptyEntries); var splitChars = splitInt.Select(s => Convert.ToChar(
Convert.ToInt32(s, 8)
).ToString()); return string.Join("", splitChars);
}
结果如下:

Asp.net,C# 纯数字加密解密字符串的更多相关文章
- java纯数字加密解密实例
我们都知道,在用户加入信息时,一些比較敏感的信息,如身份证号,手机号,用户的登录password等信息,是不能直接明文存进数据库的.今天我们就以一个详细的样例来说明一下纯数字的java加密解密技术. ...
- django删除表重建&修改用户密码&base64加密解密字符串&ps aux参数说明&各种Error例子
1.django的queryset不支持负索引 AssertionError: Negative indexing is not supported. 2.django向前端JavaScript传递列 ...
- PHP的加密解密字符串函数
程序中经常使用的PHP加密解密字符串函数 代码如下: /********************************************************************* 函数 ...
- php 加密解密字符串
/********************************************************************* 函数名称:encrypt 函数作用:加密解密字符串 使用方 ...
- Java加密解密字符串
http://www.cnblogs.com/vwpolo/archive/2012/07/18/2597232.html Java加密解密字符串 旧文重发:http://www.blogjava ...
- PHP_加密解密字符串
PHP_加密解密字符串.php <?php //加解密字符串函数,可以加密中文 /* //加密 echo $encode = authcode('爱迪生', 'ENCODE', '3'); // ...
- PHP加密解密字符串
项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理. 最常见的应用在用户登录以及一些AP ...
- [DEncrypt] RSACryption--RSA加密/解密字符串 (转载)
点击下载 RSACryption.zip 这个类是关于加密,解密的操作,文件的一些高级操作1.RSACryption RSA 的密钥产生2.RSACryption RSA的加密函数3.RSACrypt ...
- ASP.NET常用技术之加密解密
在开发项目中有许多数据需要我们进行加密解密操作,这里介绍几个加密解密的方法. 一:MD5加密 MD5加密是一种单向的加密算法,它只能加密,加密后不能进行逆向解密操作,常用于数字签名和加密用户密码. 下 ...
随机推荐
- 使用sencha cmd 一键生成你的应用程序代码
一键生成你的应用程序代码: ------------------------------------------------------------ 我们的出发点就是使用命令来产生一个应用程序,执行以 ...
- hypervisor与VMware共存方法
bcdedit /set hypervisorlaunchtype offbcdedit /set hypervisorlaunchtype auto
- yii2超好用的日期组件和时间组件
作者:白狼 出处:http://www.manks.top/yii2_datetimepicker.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接 ...
- vi, vim 基本使用(2)
进入vi的命令vi filename :打开或新建文件,并将光标置于第一行首vi +n filename :打开文件,并将光标置于第n行首vi + filename :打开文件,并将光标置于最后一行首 ...
- javascript 基础教程[温故而知新一]
子曰:“温故而知新,可以为师矣.”孔子说:“温习旧知识从而得知新的理解与体会,凭借这一点就可以成为老师了.“ 尤其是咱们搞程序的人,不管是不是全栈工程师,都是集十八般武艺于一身.不过有时候有些知识如果 ...
- 深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点
深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 2011-12-28 23:00 by 汤姆大叔, 139489 阅读, 119 评论, 收藏, 编辑 才华横溢的 ...
- 微信公众平台开发(三) 订阅事件(subscribe)处理
一.简介 新用户关注微信公众平台,将产生一个订阅事件,即subscribe事件,默认代码中没有对这一事件进行相应回复处理. 在新用户关注公众平台后,可能想知道该平台提供了哪些功能,以及怎样使用该平台, ...
- 【转】MySQL 数据库存储引擎
原文地址:http://blog.jobbole.com/94385/ 简单介绍 存储引擎就是指表的类型.数据库的存储引擎决定了表在计算机中的存储方式.存储引擎的概念是MySQl的特点,而且是一个插入 ...
- JQuery中的extend函数
1.jQuery.fn.extend(object) 扩展 jQuery 元素集来提供新的方法(通常用来制作插件). 例如:增加两个插件方法. jQuery.fn.extend({ check: fu ...
- 修改/etc/profile文件
通常情况下,/etc/profile文件是只读的,直接用vi或gedit打开修改后是无法保存的.要修改profile,需要取得root权限,(使用gedit编辑)应该如下: $sudo gedit / ...