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 对于视频文件之间的转换问题,我也已经是无力吐槽了,每个 ...
随机推荐
- 并查集-G - 食物链
G - 食物链 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A.现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种 ...
- 松软科技web教程:JavaScript HTML DOM 事件监听器
addEventListener() 方法 实例 添加当用户点击按钮时触发的事件监听器: document.getElementById("myBtn").addEventList ...
- Spring MVC 中使用properties文件
首先要搭建Spring mvc的环境,然后开始properties文件里的配置: 第一步:在springcontext中注入properties,具体路径自己调整 <bean id=" ...
- C++的多态总结(静态&动态)
什么是多态 顾名思义就是同一个事物在不同场景下的多种形态. 静态多态 我们以前说过的函数重载就是一个简单的静态多态,静态多态是编译器在编译期间完成的,编译器会根据实参类型来选择调用合适的函数,如果有合 ...
- xpath解析html标签
最近忙一个需求:把一个字符串形式的html文档转化成excel. 分解需求: ① 实现语言 ———— python ② html解析 ———— 用 lxml库的etree工具,xpath方式解析文档树 ...
- Python之xml读写
遇到问题xml文件读写,没有子节点需要新建ChildNode. # -*- coding: utf-8 -*- import os import shutil import xml.dom.minid ...
- 洛谷 P1659 [国家集训队]拉拉队排练(Manacher)
题目链接:https://www.luogu.com.cn/problem/P1659 思路: 首先跑一遍Manacher,用$cnt_i$记录长为$i$的回文串有多少个. 所记录的$cnt$并不是最 ...
- html滑动
$('html, body').animate({scrollTop: 1500}, 'fast');
- NPOI 导出Excel表报错
当导出2007格式的时候,打开文件总是报错“发现 xxx中的部分内容有问题.是否让我们尽量尝试恢复?”. 导出的程序: protected void btnValidateInternalData_C ...
- k8s默认存储动态挂载分配配置
k8s默认存储动态挂载分配配置 k8s默认存储动态挂载分配配置 https://blog.csdn.net/BigData_Mining/article/details/96973871