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 对于视频文件之间的转换问题,我也已经是无力吐槽了,每个 ...
随机推荐
- Photoshop——APP设计规范
随着Android和iOS语言的兴起,能够在手机上运行的APP软件已经成为了目前移动应用技术的焦点,APP的UI设计随之也越来越受到重视. 用户的需求不断增加,技术也在不断的更新,UI设计也越来越被重 ...
- Android开发实战——记账本(5)
开发日志——(5) 今天打算将图标的功能实现,将打开图表的选项放在右上方,所以重写MainActivity中的onOptionsItemSelected方法.增添Chart选项 public ...
- 【资源分享】Gmod自由移动镜头脚本
*----------------------------------------------[下载区]----------------------------------------------* ...
- D. Lunar New Year and a Wander bfs+优先队列
D. Lunar New Year and a Wander bfs+优先队列 题意 给出一个图,从1点开始走,每个点至少要经过一次(可以很多次),每次经过一个没有走过的点就把他加到走过点序列中,问最 ...
- Iris_MVC
2. MVC包使用 在Iris框架中,封装了mvc包作为对mvc架构的支持,方便开发者遵循mvc的开发原则进行开发. iris框架支持请求数据.模型.持久数据分层处理,并支持各层级模块代码绑定执行. ...
- 当用命令导入csv文件时提示错误[Err] 1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
安装之后没有my.ini配置文件怎么办,因为自己安装的是zip压缩版的mysql,所以再5.7之后就没有my.ini配置文件,所以有时候需要去自己创建一个叫my.ini的配置文件,但是特别 要 ...
- c++ google glog模块安装和基本使用(ubuntu)环境
1,如何安装 1 Git clone https://github.com/google/glog.git 2 cd glog 3 ./autogen.sh 4 ./configure --prefi ...
- Redis读写分离的简单配置
Master进行写操作,可能只需要一台Master.进行写操作,关闭数据持久化. Slave进行读操作,可能需要多台Slave.进行读操作,打开数据持久化. 假设初始配置有Master服务器为A,sl ...
- 密码学笔记——eval(function(p,a,c,k,e,d) 加密破解
密码学笔记——eval(function(p,a,c,k,e,d) 的加密破解 例题: 小明某天在看js的时候,突然看到了这么一段代码,发现怎么也理不出代码逻辑,你能帮帮他吗? 格式:SimCTF{} ...
- float和position:absolute脱离文本流的区别
float和position:absolute脱离文本流的区别原创 paediatrician 最后发布于2016-09-19 10:43:05 阅读数 5375 收藏展开 文档流:将窗体自上而下分成 ...