pb加密转换成C#
本来想把PB 的函数封装成COM组件调用,结果怎么都搞不定,只能讲代码搞出来换种语言实现了.
string s_ret
integer i_first,i_second,i_third,i_fourth
integer by4,i,reallen
long i_total
string is_key
string is_base64
string EncMap[ to ]
int DecMap[ to ]
integer by3
long i_len is_base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
is_base64 = is_base64 + "abcdefghijklmnopqrstuvwxyz"
is_base64 = is_base64 + ""
is_base64 = is_base64 + "+/"
for i = to
EncMap[i]=mid(is_base64,i+,)
next
for i = to
DecMap[asc(EncMap[i])] = i
next
choose case a_type
case //加密
s_ret = ""
if len(a_text)= then
return s_ret
end if
by3=len(a_text) - mod(len(a_text),)
i=
do while i<= by3
i_first = asc(mid(a_text,i + ,))
i_second = asc(mid(a_text, i + ,))
i_third = asc(mid(a_text,i + ,))
s_ret = s_ret + encmap[i_first / ]
s_ret = s_ret + encmap[mod(i_first , ) * + i_second / ]
s_ret = s_ret + encmap[mod(i_second , ) * + i_third / ]
s_ret = s_ret + encmap[mod(i_third , )]
i = i +
loop
if i <= len(a_text) then
i_first = asc(mid(a_text, i + , ))
if mod(len(a_text), )= then
i_second =asc(mid(a_text,i+,))
s_ret = s_ret + encmap[i_first / ]
s_ret = s_ret + encmap[mod(i_first , ) * + i_second / ]
s_ret = s_ret + encmap[mod(i_second , ) * ]
s_ret = s_ret + "="
else
s_ret = s_ret + encmap[i_first / ]
s_ret = s_ret + encmap[mod(i_first,) * ]
s_ret = s_ret + "=="
end if
end if
i_len = len(s_ret)
s_ret = left(string(i_len+),) + s_ret case //解密
if len(a_text)= then
s_ret = ""
return s_ret
end if
a_text=right(a_text,len(a_text)-)
reallen = len(a_text)
do while mid(a_text,reallen,) = "="
reallen = reallen -
loop
by4=reallen - mod(reallen,)
i=
do while i<= by4
i_first = decmap[asc(mid(a_text,i + ,))]
i_second = decmap[asc(mid(a_text, i + ,))]
i_third = decmap[asc(mid(a_text,i + ,))]
i_fourth = decmap[asc(mid(a_text,i + ,))]
s_ret = s_ret + char(i_first * + i_second / )
s_ret = s_ret + char(mod(i_second,) * + i_third / )
if mod(i_third,) * + i_fourth <> then
s_ret = s_ret + char(mod(i_third,) * + i_fourth)
end if
i = i +
loop
if i<= reallen then //只可能是xx==或xxx=两种形式有效
if mod(reallen,) = then //xx==形式
i_first = decmap[asc(mid(a_text,i + ,))]
i_second = decmap[asc(mid(a_text, i + ,))]
s_ret = s_ret + char(i_first * + i_second / )
s_ret = s_ret + char(mod(i_second,) * )
else
i_first = decmap[asc(mid(a_text,i + ,))]
i_second = decmap[asc(mid(a_text, i + ,))]
i_third = decmap[asc(mid(a_text,i + ,))]
s_ret = s_ret + char(i_first * + i_second / )
s_ret = s_ret + char(mod(i_second,) * + i_third / )
end if
end if end choose
return s_ret
public static string right(string s1, int str)
{
return s1.Substring(s1.Trim().Length - str, str);
} public static string left(string s1, int str)
{
return s1.Substring( , str);
} public static char mid(string s1, int str, int len)
{
return s1.Substring(str, len).ToArray()[];
} public static int asc(char c1)
{
return(int)c1;
} public static int mod(int x,int y)
{
return x % y;
} public static int len(string s1)
{
return s1.Length;
} public static string encrypt(string a_text, string type = "")
{
string s_ret;
int i_first, i_second, i_third, i_fourth;
int by4, i, reallen;
long i_total;
string is_key;
string is_base64;
char[] encmap = new char[];
int[] decmap = new int[];
int by3 = ;
long i_len; is_base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
is_base64 = is_base64 + "abcdefghijklmnopqrstuvwxyz";
is_base64 = is_base64 + "";
is_base64 = is_base64 + "+/"; char[] tk = is_base64.ToCharArray(); for (i = ; i <= ; i++)
{
encmap[i] = tk[i];
} for (i = ; i <= ; i++)
{
int tp = (int)asc(encmap[i]);
decmap[tp] = i;
} s_ret = "";
if (a_text.Trim() == "")
{
return s_ret;
} if (type == "")
{
by3 = a_text.Length - (a_text.Length % ); i = ;
while (i < by3)
{
i_first = asc(mid(a_text, i + , )); i_second = asc(mid(a_text, i + , ));
i_third = asc(mid(a_text, i + , ));
s_ret = s_ret + encmap[i_first / ];
s_ret = s_ret + encmap[mod(i_first, ) * + i_second / ];
s_ret = s_ret + encmap[mod(i_second, ) * + i_third / ];
s_ret = s_ret + encmap[mod(i_third, )];
i = i + ;
}
if (i < len(a_text))
{
i_first = asc(mid(a_text, i + , ));
if ((a_text.Length % ) == )
{
i_second = asc(mid(a_text, i + , ));
s_ret = s_ret + encmap[i_first / ];
s_ret = s_ret + encmap[mod(i_first, ) * + i_second / ];
s_ret = s_ret + encmap[mod(i_second, ) * ];
s_ret = s_ret + "=";
}
else
{
s_ret = s_ret + encmap[i_first / ];
s_ret = s_ret + encmap[mod(i_first, ) * ];
s_ret = s_ret + "==";
}
}
i_len = len(s_ret);
s_ret = left((i_len + ).ToString(), ) + s_ret;
}
else
{ a_text = right(a_text, len(a_text) - );
reallen = len(a_text);
while (mid(a_text, reallen - , ) == '=')
{
reallen = reallen - ;
} by4 = reallen - mod(reallen, ); i = ; while (i < by4)
{
i_first = decmap[asc(mid(a_text, i + , ))];
i_second = decmap[asc(mid(a_text, i + , ))];
i_third = decmap[asc(mid(a_text, i + , ))];
i_fourth = decmap[asc(mid(a_text, i + , ))];
s_ret = s_ret + (char)(i_first * + i_second / );
s_ret = s_ret + (char)(mod(i_second, ) * + i_third / );
if (mod(i_third, ) * + i_fourth != )
{
s_ret = s_ret + (char)(mod(i_third, ) * + i_fourth);
}
i = i + ;
}
if (i < reallen)
{
//只可能是xx==或xxx=两种形式有效
if (mod(reallen, ) == ) //xx==形式
{
i_first = decmap[asc(mid(a_text, i + , ))];
i_second = decmap[asc(mid(a_text, i + , ))];
s_ret = s_ret + (char)(i_first * + i_second / );
s_ret = s_ret + (char)(mod(i_second, ) * );
}
else
{
i_first = decmap[asc(mid(a_text, i + , ))];
i_second = decmap[asc(mid(a_text, i + , ))];
i_third = decmap[asc(mid(a_text, i + , ))];
s_ret = s_ret + (char)(i_first * + i_second / );
s_ret = s_ret + (char)(mod(i_second, ) * + i_third / );
}
}
}
return s_ret;
}
pb加密转换成C#的更多相关文章
- 一个java的DES加密解密类转换成C#
		
一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //import java.util.regex.P ...
 - 生成二维码  加密解密类  TABLE转换成实体、TABLE转换成实体集合(可转换成对象和值类型)  COOKIE帮助类  数据类型转换  截取字符串  根据IP获取地点  生成随机字符  UNIX时间转换为DATETIME\DATETIME转换为UNIXTIME  是否包含中文    生成秘钥方式之一  计算某一年 某一周 的起始时间和结束时间
		
生成二维码 /// <summary>/// 生成二维码/// </summary>public static class QRcodeUtils{private static ...
 - h5模型文件转换成pb模型文件
		
本文主要记录Keras训练得到的.h5模型文件转换成TensorFlow的.pb文件 #*-coding:utf-8-* """ 将keras的.h5的模型文件,转换 ...
 - java将office文档pdf文档转换成swf文件在线预览
		
第一步,安装openoffice.org openoffice.org是一套sun的开源office办公套件,能在widows,linux,solaris等操作系统上执行. 主要模块有writer(文 ...
 - https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
		
一:什么是https SSL(Security Socket Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安 ...
 - 【转】https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
		
正需要这个,写的很好,就转过来了 转自: http://www.cnblogs.com/naniannayue/ 一:什么是https SSL(Security Socket Layer)全称 ...
 - 一个java的DES加解密类转换成C#
		
原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //i ...
 - Unix时间戳转换成C#中的DateTime
		
先交代一下应用场景:我们的软件需要做一个简单的有效期验证保护.初始的想法是 在本地将安装时间.启动时间.当前时间做比较,为了防止记录被修改,记录在注册表的特殊的地方并加密. 我使用了.net自带的rs ...
 - 【转】qlv文件如何转换成mp4 怎样把下载好的qlv格式视频转换成MP4格式
		
狸窝 复制 收藏 保存到桌面 快速找教程方案 反馈需求 社会主义核心价值观 客服QQ41442901 马上注册 升级VIP 对于视频文件之间的转换问题,我也已经是无力吐槽了,每个 ...
 
随机推荐
- istio部署-istio jaeger & kiali
			
参考 fleeto/sleep fleeto/flaskapp jaegertracing/jaeger kiali kiali/kiali kiali/kiali-ui kiali/kiali/ta ...
 - spring(一):思维导图
 - TCP/IP协议-为什么说TCP是可靠连接
			
我们平常经常说UDP是不可靠连接,TCP是可靠连接,然而TCP为什么是可靠的呢 1. TCP和UDP的优缺点TCP 缺点: [1] 三次握手四次挥手,传输更多包,浪费一些带宽[2] 为了进行可靠通信, ...
 - selenium的错误截图
			
在自动化测试过程中,测试执行期间需要收集获取截图信息,一方面为了错误调试代码,一方面也为了和开发沟通, 获取当前的截图 save_screenshot是获取当前截图的方法,以百度首页为例,打开百度首页 ...
 - HTML学习(4)属性
			
属性是HTML元素提供的附加信息,大多数标签都能设置属性,一般位于开始标签,以名称/值的方式出现,例:name="value". 值要放在引号内(单引号.双引号都可以),如果值包含 ...
 - 动态设置微信小程序 navigationBarTitle 的值
			
wx.setNavigationBarTitle({ title:' 动态值 ' })
 - 快速上手leetcode动态规划题
			
快速上手leetcode动态规划题 我现在是初学的状态,在此来记录我的刷题过程,便于以后复习巩固. 我leetcode从动态规划开始刷,语言用的java. 一.了解动态规划 我上网查了一下动态规划,了 ...
 - arcgis中的Join(合并连接)和Relate(关联连接)
			
arcgis中的Join(合并连接)和Relate(关联连接) 一.区别 1.连接关系不一样. Relate(关联连接)方式连接的两个表之间的记录可以是“一对一”.“多对一”.“一对多”的关系 Joi ...
 - HDU - 5187 zhx's contest(快速幂+快速乘法)
			
作为史上最强的刷子之一,zhx的老师让他给学弟(mei)们出n道题.zhx认为第i道题的难度就是i.他想要让这些题目排列起来很漂亮. zhx认为一个漂亮的序列{ai}下列两个条件均需满足. 1:a1. ...
 - ACM-ICPC实验室20.2.21测试-图论(二)
			
A.患者的编号 给出一个有向图,要求你输出字典序最小的拓扑排序. 常规拓扑排序是做不了的,正解是反向建图,同时用大根堆的优先队列维护,保证每次优先访问编号大的结点,再反向输出~ #include< ...