C# 基于密钥的64位加密与解密方法(原创)
本程序适用于产品的价格加密生成图片格式的价格,防止价格被抓去
/// <summary>
///TTBase64Encode 的摘要说明
/// </summary>
public class TTBase64Encode
{
public TTBase64Encode()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
const string imgurlhost = "http://img.cblogs.com";
const string ttBASE_64_MAP_INIT = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
//ReadKeyFromFile(g_KeyLocation)
const string g_Key = "WERTYUIOFVGBNM663285716";
string ttnewline;
string[] ttBase64EncMap = new string[63];
string[] Base64DecMap = new string[127];
//初始化函数
public void ttinitCodecs()
{
// 初始化变量
ttnewline = "<P>" + Convert.ToChar(13) + Convert.ToChar(10);
dynamic ttmax = null;
dynamic ttidx = null;
ttmax = ttBASE_64_MAP_INIT.Length;
for (ttidx = 0; ttidx <= ttmax - 1; ttidx++)
{
ttBase64EncMap[ttidx] = ttBASE_64_MAP_INIT.Substring(ttidx + 1, 1);
}
for (ttidx = 0; ttidx <= ttmax - 1; ttidx++)
{
Base64DecMap[Asc(ttBase64EncMap[ttidx])] = ttidx;
}
}
/// <summary>
/// 转化为ascii
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
protected int stringtoascii(string s)
{
string ascii = "";
foreach (char c in s)
{
int str = (int)c;
ascii += str + ",";
} if (ascii.Length > 0)
{
ascii = ascii.Substring(0, ascii.Length - 1);
}
return Convert.ToInt32(ascii);
}
/// <summary>
/// 转化为Ascii
/// </summary>
/// <param name="character"></param>
/// <returns></returns>
public static int Asc(string character)
{
if (character.Length == 1)
{
System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
int intAsciiCode = (int)asciiEncoding.GetBytes(character)[0];
return (intAsciiCode);
}
else
{
throw new Exception("Character is not valid.");
}
}
///Base64加密函数
public object ttbase64Encode(string price)
{
string ttret = string.Empty;
if (price.Length == 0)
{
return "";
}
string ttplain = EnCrypt(price).ToString();
dynamic ttndx = null;
dynamic ttby3 = null;
dynamic ttfirst = null;
dynamic ttsecond = null;
dynamic ttthird = null;
ttby3 = (ttplain.Length / 3) * 3;
ttndx = 1;
while (ttndx <= ttby3)
{
ttfirst = Asc(ttplain.Substring(ttndx + 0, 1));
ttsecond = Asc(ttplain.Substring(ttndx + 1, 1));
ttthird = Asc(ttplain.Substring(ttndx + 2, 1));
ttret = ttret + ttBase64EncMap[(ttfirst / 4) & 63];
ttret = ttret + ttBase64EncMap[((ttfirst * 16) & 48) + ((ttsecond / 16) & 15)];
ttret = ttret + ttBase64EncMap[((ttsecond * 4) & 60) + ((ttthird / 64) & 3)];
ttret = ttret + ttBase64EncMap[ttthird & 63];
ttndx = ttndx + 3;
}
if (ttby3 < ttplain.Length)
{
ttfirst = Asc(ttplain.Substring(ttndx + 0, 1));
ttret = ttret + ttBase64EncMap[(ttfirst / 4) & 63];
if ((ttplain.Length % 3) == 2)
{
ttsecond = Asc(ttplain.Substring(ttndx + 1, 1));
ttret = ttret + ttBase64EncMap[((ttfirst * 16) & 48) + ((ttsecond / 16) & 15)];
ttret = ttret + ttBase64EncMap[((ttsecond * 4) & 60)];
}
else
{
ttret = ttret + ttBase64EncMap[(ttfirst * 16) & 48];
}
}
return ttret;
}
////Base64解密函数
public object ttbase64Decode(string ttscrambled)
{
string ttret = string.Empty;
if (ttscrambled.Length == 0)
{
return ttret;
}
dynamic ttrealLen = null;
ttrealLen = ttscrambled.Length;
while (ttscrambled.Substring(ttrealLen, 1) == "=")
{
ttrealLen = ttrealLen - 1;
}
dynamic ttndx = null;
dynamic ttby4 = null;
dynamic ttfirst = null;
dynamic ttsecond = null;
dynamic ttthird = null;
dynamic ttfourth = null;
ttret = "";
ttby4 = (ttrealLen / 4) * 4;
ttndx = 1;
while (ttndx <= ttby4)
{
ttfirst = Base64DecMap[Asc(ttscrambled.Substring(ttndx + 0, 1))];
ttsecond = Base64DecMap[Asc(ttscrambled.Substring(ttndx + 1, 1))];
ttthird = Base64DecMap[Asc(ttscrambled.Substring(ttndx + 2, 1))];
ttfourth = Base64DecMap[Asc(ttscrambled.Substring(ttndx + 3, 1))];
ttret = ttret + Convert.ToChar(((ttfirst * 4) & 255) + ((ttsecond / 16) & 3));
ttret = ttret + Convert.ToChar(((ttsecond * 16) & 255) + ((ttthird / 4) & 15));
ttret = ttret + Convert.ToChar(((ttthird * 64) & 255) + (ttfourth & 63));
ttndx = ttndx + 4;
}
if (ttndx < ttrealLen)
{
ttfirst = Base64DecMap[Asc(ttscrambled.Substring(ttndx + 0, 1))];
ttsecond = Base64DecMap[Asc(ttscrambled.Substring(ttndx + 1, 1))];
ttret = ttret + Convert.ToChar(((ttfirst * 4) & 255) + ((ttsecond / 16) & 3));
if (ttrealLen % 4 == 3)
{
ttthird = Base64DecMap[Asc(ttscrambled.Substring(ttndx + 2, 1))];
ttret = ttret + Convert.ToChar(((ttsecond * 16) & 255) + ((ttthird / 4) & 15));
}
}
return ttret;
}
/// <summary>
/// 加密调用方法入口
/// </summary>
/// <param name="strCryptThis"></param>
/// <returns></returns>
public object EnCrypt(string strCryptThis)
{
dynamic strChar = null;
dynamic iKeyChar = null;
dynamic iStringChar = null;
dynamic strEncrypted = null;
dynamic I = null;
dynamic leng = null;
leng = strCryptThis.Length;
for (I = 0; I < leng; I++)
{
iKeyChar = Asc(g_Key.Substring(I, 1));
iStringChar = Asc(strCryptThis.Substring(I, 1));
dynamic iCryptChar = iKeyChar ^ iStringChar;
strEncrypted += Convert.ToChar(iCryptChar).ToString();
}
return strEncrypted;
}
}
转载于:https://www.cnblogs.com/jqbird/archive/2011/03/16/1986096.html
C# 基于密钥的64位加密与解密方法(原创)相关推荐
- aes加密算法python实现_Python基于pycrypto实现的AES加密和解密算法示例
本文实例讲述了Python基于pycrypto实现的AES加密和解密算法.分享给大家供大家参考,具体如下: 一 代码 # -*- coding: UTF-8 -*- import string imp ...
- CATIA V5 R19 WIN7 64位系统的安装方法
CATIA V5 R19 WIN7 64位系统的安装方法 本文主要记录了根据参考文档安装Catia V5 R9的过程. 参考文档:CATIA V5 R19 WIN7 64位系统的安装方法 所需组件 表 ...
- 计算机是否支持64位操作系统,教你查看自己的电脑是否支持64位win7系统的方法...
问:我想要安装windows7的64位系统,但是听说有的电脑并不能装64位系统,不知道自己的电脑是否支持64位win7系统,能不能告诉我要如何查看自己的电脑是否支持64位win7系统呢? 答:如果电脑 ...
- 在win10中开启64位ie浏览器的方法(IE11)
** 在64位win10中开启64位ie浏览器的方法(IE11) 步骤一 打开ie浏览器,设置->Internet选项->高级,找到,启用增强保护模式 和 针对增强保护模式启用64位进程, ...
- 介绍几种最常见的加密和解密方法
加密与解密是通信中最常用的数据转换手段,加密的基本过程是应用加密算法与密钥对明文(尚未加密的原文)实施加密,转换成密文发送:解密的基本过程是接收到密文后,应用相应算法与同一密钥对密文解密,转换为明文: ...
- 常见的js加密/js解密方法
常见的js加密/js解密方法 当今互联网世界中,数据安全是至关重要的.为了保护用户的隐私和保密信息,开发人员必须采取适当的安全措施.在前端开发中,加密和解密技术是一种常见的数据安全措施,其中 Java ...
- 一种客户端即时通信数据的加密和解密方法
一种客户端即时通信数据的加密和解密方法 摘要 本发明适用于即时通信领域,提供了一种客户端即时通信数据的加密和解密方法,所述方法包括以下步骤:A.客户端加密本地保存的即时通信数据,并将数据加密密钥上传 ...
- Windows应用技巧___Desktop 文件夹EFS加密常用解密方法
Windows应用技巧导出证书和密钥---防止永久性不能访问加密文件 Windows应用扩展资料: Desktop 文件夹EFS加密常用解密方法 个人加密证书没有问题 Windows应用扩展资料: W ...
- phpc.sinaapp.com 加密的解密方法
原文:phpc.sinaapp.com 加密的解密方法 很简单,用类似phpjm的解密方式,替换掉_inc.php中最后一个return中的eval为print就出来了.
最新文章
- 整理了一下SQL Server里面可能经常会用到的日期格式转换方法
- gbk与utf-8的区别
- linux 路由器去广告,linux – 如何正确发送路由器广告?
- php如何对几G的文本数据去重,Linux下导出数据库文件进行统计+去重
- python中文文本分析_python--文本分析
- 嘘!阿里程序媛上班的第一件事是...
- Kafka-Monitor
- 多线程与高并发(七):详解线程池 - 自定义线程池,JDK自带线程池,ForkJoin,源码解析等
- shiro 删除用户session_我的shiro之旅: 十二 shiro 踢出用户(同一用户只能一处登录)...
- 【Alpha阶段汇总】成果展示与体验总结
- LeetCode每日打卡 - 汉明距离
- Java swing实现简单的浏览器源码免费分享
- HTML+CSS+JS实现计算机功能
- Android中的短信收不到问题
- win7与winxp双系统安装后的引导过程
- java 加载java文件_如何用JAVA实现加载一个文件?
- (21)tar打包命令详解
- 从辉煌走向消亡(上)——小型机之王DEC公司
- 宽带升级后,手机能连WiFi,电脑却连不上的解决办法 TC7102WiFi
- caffe中的Accuracy