博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
16进制可逆加密算法
阅读量:5317 次
发布时间:2019-06-14

本文共 2400 字,大约阅读时间需要 8 分钟。

16进制可逆操作类:

public static class Hex16    {        ///         /// 作用:将字符串内容转化为16进制数据编码,其逆过程是Decode        /// 参数说明:        /// strEncode 需要转化的原始字符串        /// 转换的过程是直接把字符转换成Unicode字符,比如数字"3"-->0033,汉字"我"-->U+6211        /// 函数decode的过程是encode的逆过程.        ///         public static string Encode(string strEncode)        {            string strReturn = "";//  存储转换后的编码            try            {                foreach (short shortx in strEncode.ToCharArray())                {                    strReturn += shortx.ToString("X4");                }            }            catch { }            return strReturn;        }        ///         /// 作用:将16进制数据编码转化为字符串,是Encode的逆过程        ///         public static string Decode(string strDecode)        {            string sResult = "";            try            {                for (int i = 0; i < strDecode.Length / 4; i++)                {                    sResult += (char)short.Parse(strDecode.Substring(i * 4, 4),                        global::System.Globalization.NumberStyles.HexNumber);                }            }            catch { }            return sResult;        }        ///         /// 将数字转换成16进制字符串,后两位加入随机字符,其可逆方法为DecodeForNum        ///         public static string EncodeForNum(int id)        {            //用户加上起始位置后的            int startUserIndex = id;            //转换成16进制            string hexStr = Convert.ToString(startUserIndex, 16);            //后面两位加入随机数            string randomchars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";            string tmpstr ="";            //整除的后得到的数可能大于被除数            tmpstr += randomchars[(id / randomchars.Length) > randomchars.Length ? randomchars.Length - 1 : (id / randomchars.Length)];            //余数不可能大于被除数            tmpstr += randomchars[(id % randomchars.Length) > randomchars.Length ? randomchars.Length - 1 : (id % randomchars.Length)];                        //返回拼接后的字符,转成大写            string retStr = (hexStr + tmpstr).ToUpper();            return retStr;        }        ///         /// 解密16进制字符串,此方法只适合后面两位有随机字符的        ///         public static int DecodeForNum(string strDecode)        {            if (strDecode.Length>2)            {                strDecode = strDecode.Substring(0, strDecode.Length - 2);                return Convert.ToInt32(strDecode, 16);            }            return 0;        }    }

 

转载于:https://www.cnblogs.com/linJie1930906722/p/5968177.html

你可能感兴趣的文章
zbb20181217 通过Tomcat配置、启动Springboot项目war包程序
查看>>
javascript 检测手机设备 百度siteapp下的一款跳转的产品,使用起来很方便。你可以用这款JS跳转到手机版,也可以跳转到任何你想跳转的位置。...
查看>>
Excel:合并某一列
查看>>
原型1
查看>>
字符编码知识:Unicode、UTF-8、ASCII、GB2312等编码之间是如何转换的?
查看>>
深入理解Static关键字修饰符
查看>>
国际化之DateFormat、NumberFormat
查看>>
IIS部署PHP项目并与mysql完美结合
查看>>
iOS 查看崩溃日志与符号化
查看>>
在ASP.NET MVC中使用 Bootstrap table插件
查看>>
SQL Server 2008、SQL Server 2008R2 自动备份数据库
查看>>
[转]菲尔人格测试
查看>>
ligerui_ligerTree_006_ligerui事件支持
查看>>
HDU3038 How Many Answers Are Wrong 并查集
查看>>
UOJ#266. 【清华集训2016】Alice和Bob又在玩游戏 博弈,DSU on Tree,Trie
查看>>
What's the Difference between the frame and the bounds?
查看>>
oracle之二表和表空间的关系
查看>>
顺序存储结构和链式存储结构
查看>>
ANDROID布局实现圆角边框
查看>>
广告banner:手动滑动切换,自动切换,点击跳转,异步加载网络图片
查看>>