当前位置:首页>编程日记>正文

C# 基于密钥的64位加密与解密方法(原创)

本站寻求有缘人接手,详细了解请联系站长QQ1493399855

本程序适用于产品的价格加密生成图片格式的价格,防止价格被抓去

using System;

/// <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;

}

}

http://www.coolblog.cn/news/8820ef1895e166d7.html

相关文章:

  • asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  • s7day2学习记录
  • 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  • 矿Spring入门Demo
  • 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  • Linux 实时流量监测(iptraf中文图解)
  • Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
  • 美颜
  • shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  • 如何优雅的实现 Spring Boot 接口参数加密解密?
  • LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  • 支撑微博千亿调用的轻量级RPC框架:Motan
  • Mac原生Terminal快速登录ssh
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010
  • java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  • mysql commit 机制_1024MySQL事物提交机制
  • 2019-9
  • jquery 使用小技巧
  • 科学计算工具NumPy(3):ndarray的元素处理
  • vscode pylint 错误_将实际未错误的py库添加到pylint白名单
  • linux批量创建用户和密码
  • 工程师在工作电脑存 64G 不雅文件,被公司开除后索赔 41 万,结果…
  • js常用阻止冒泡事件
  • newinsets用法java_Java XYPlot.setInsets方法代碼示例
  • 气泡图在开源监控工具中的应用效果
  • 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  • php 启动服务器监听
  • dubbo简单示例
  • Ubuntu13.10:[3]如何开启SSH SERVER服务
  • [iptables]Redhat 7.2下使用iptables实现NAT
  • 【设计模式】 模式PK:策略模式VS状态模式
  • CSS小技巧——CSS滚动条美化
  • JS实现-页面数据无限加载
  • 最新DOS大全
  • Django View(视图系统)
  • 阿里巴巴分布式服务框架 Dubbo
  • 阿里大鱼.net core 发送短信
  • Sorenson Capital:值得投资的 5 种 AI 技术
  • 程序员入错行怎么办?
  • 两张超级大表join优化
  • Arm芯片的新革命在缓缓上演
  • 第九天函数
  • Linux软件安装-----apache安装
  • HDU 5988 最小费用流
  • 《看透springmvc源码分析与实践》读书笔记一
  • nagios自写插件—check_file
  • python3 错误 Max retries exceeded with url 解决方法
  • 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)
  • 通过Spark进行ALS离线和Stream实时推荐
  • 行为模式之Template Method模式