C#帮助类:Base64
- public class Base64
- {
- #region Base64加密
- ///<summary>
- ///Base64加密
- ///</summary>
- ///<paramname="Message"></param>
- ///<returns></returns>
- public static string Base64Code(string Message)
- {
- char[] Base64Code = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '', '', '', '', '', '', '', '', '', '', '+', '/', '=' };
- byte empty = (byte);
- System.Collections.ArrayList byteMessage = new System.Collections.ArrayList(System.Text.Encoding.Default.GetBytes(Message));
- System.Text.StringBuilder outmessage;
- int messageLen = byteMessage.Count;
- //将字符分成3个字节一组,如果不足,则以0补齐
- int page = messageLen / ;
- int use = ;
- if ((use = messageLen % ) > )
- {
- for (int i = ; i < - use; i++) byteMessage.Add(empty);
- page++;
- }
- //将3个字节的每组字符转换成4个字节一组的。3个一组,一组一组变成4个字节一组
- //方法是:转换成ASCII码,按顺序排列24位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。
- outmessage = new System.Text.StringBuilder(page * ); for (int i = ; i < page; i++)
- {
- //取一组3个字节的组
- byte[] instr = new byte[]; instr[] = (byte)byteMessage[i * ]; instr[] = (byte)byteMessage[i * + ]; instr[] = (byte)byteMessage[i * + ];
- //六个位为一组,补0变成4个字节
- int[] outstr = new int[];
- //第一个输出字节:取第一输入字节的前6位,并且在高位补0,使其变成8位(一个字节)
- outstr[] = instr[] >> ;
- //第二个输出字节:取第一输入字节的后2位和第二个输入字节的前4位(共6位),并且在高位补0,使其变成8位(一个字节)
- outstr[] = ((instr[] & 0x03) << ) ^ (instr[] >> );
- //第三个输出字节:取第二输入字节的后4位和第三个输入字节的前2位(共6位),并且在高位补0,使其变成8位(一个字节)
- if (!instr[].Equals(empty)) outstr[] = ((instr[] & 0x0f) << ) ^ (instr[] >> ); else outstr[] = ;
- //第四个输出字节:取第三输入字节的后6位,并且在高位补0,使其变成8位(一个字节)
- if (!instr[].Equals(empty)) outstr[] = (instr[] & 0x3f); else outstr[] = ; outmessage.Append(Base64Code[outstr[]]);
- outmessage.Append(Base64Code[outstr[]]);
- outmessage.Append(Base64Code[outstr[]]);
- outmessage.Append(Base64Code[outstr[]]);
- }
- return outmessage.ToString();
- }
- #endregion Base64加密
- #region Base64解密
- ///<summary>///Base64解密
- ///</summary>
- ///<paramname="Message"></param>
- ///<returns></returns>
- public static string Base64Decode(string Message)
- {
- if ((Message.Length % ) != )
- {
- throw new ArgumentException("不是正确的BASE64编码,请检查。", "Message");
- }
- if (!System.Text.RegularExpressions.Regex.IsMatch(Message, "^[A-Z0-9/+=]*$", System.Text.RegularExpressions.RegexOptions.IgnoreCase))
- {
- throw new ArgumentException("包含不正确的BASE64编码,请检查。", "Message");
- }
- string Base64Code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
- int page = Message.Length / ;
- System.Collections.ArrayList outMessage = new System.Collections.ArrayList(page * );
- char[] message = Message.ToCharArray();
- for (int i = ; i < page; i++)
- {
- byte[] instr = new byte[];
- instr[] = (byte)Base64Code.IndexOf(message[i * ]);
- instr[] = (byte)Base64Code.IndexOf(message[i * + ]);
- instr[] = (byte)Base64Code.IndexOf(message[i * + ]);
- instr[] = (byte)Base64Code.IndexOf(message[i * + ]);
- byte[] outstr = new byte[];
- outstr[] = (byte)((instr[] << ) ^ ((instr[] & 0x30) >> ));
- if (instr[] != )
- {
- outstr[] = (byte)((instr[] << ) ^ ((instr[] & 0x3c) >> ));
- }
- else
- {
- outstr[] = ;
- }
- if (instr[] != )
- {
- outstr[] = (byte)((instr[] << ) ^ instr[]);
- }
- else
- {
- outstr[] = ;
- }
- outMessage.Add(outstr[]);
- if (outstr[] != ) outMessage.Add(outstr[]);
- if (outstr[] != ) outMessage.Add(outstr[]);
- }
- byte[] outbyte = (byte[])outMessage.ToArray(Type.GetType("System.Byte"));
- return System.Text.Encoding.Default.GetString(outbyte);
- }
- #endregion Base64解密
- #region RSA加密解密
- /// <summary>
- /// RSA加密
- /// </summary>
- /// <param name="publickey"></param>
- /// <param name="content"></param>
- /// <returns></returns>
- public static string RSAEncrypt(string publickey, string content)
- {
- publickey = @"<RSAKeyValue><Modulus>5m9m14XH3oqLJ8bNGw9e4rGpXpcktv9MSkHSVFVMjHbfv+SJ5v0ubqQxa5YjLN4vc49z7SVju8s0X4gZ6AzZTn06jzWOgyPRV54Q4I0DCYadWW4Ze3e+BOtwgVU1Og3qHKn8vygoj40J6U85Z/PTJu3hN1m75Zr195ju7g9v4Hk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
- RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
- byte[] cipherbytes;
- rsa.FromXmlString(publickey);
- cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(content), false);
- return Convert.ToBase64String(cipherbytes);
- }
- /// <summary>
- /// RSA解密
- /// </summary>
- /// <param name="privatekey"></param>
- /// <param name="content"></param>
- /// <returns></returns>
- public static string RSADecrypt(string privatekey, string content)
- {
- privatekey = @"<RSAKeyValue><Modulus>5m9m14XH3oqLJ8bNGw9e4rGpXpcktv9MSkHSVFVMjHbfv+SJ5v0ubqQxa5YjLN4vc49z7SVju8s0X4gZ6AzZTn06jzWOgyPRV54Q4I0DCYadWW4Ze3e+BOtwgVU1Og3qHKn8vygoj40J6U85Z/PTJu3hN1m75Zr195ju7g9v4Hk=</Modulus><Exponent>AQAB</Exponent><P>/hf2dnK7rNfl3lbqghWcpFdu778hUpIEBixCDL5WiBtpkZdpSw90aERmHJYaW2RGvGRi6zSftLh00KHsPcNUMw==</P><Q>6Cn/jOLrPapDTEp1Fkq+uz++1Do0eeX7HYqi9rY29CqShzCeI7LEYOoSwYuAJ3xA/DuCdQENPSoJ9KFbO4Wsow==</Q><DP>ga1rHIJro8e/yhxjrKYo/nqc5ICQGhrpMNlPkD9n3CjZVPOISkWF7FzUHEzDANeJfkZhcZa21z24aG3rKo5Qnw==</DP><DQ>MNGsCB8rYlMsRZ2ek2pyQwO7h/sZT8y5ilO9wu08Dwnot/7UMiOEQfDWstY3w5XQQHnvC9WFyCfP4h4QBissyw==</DQ><InverseQ>EG02S7SADhH1EVT9DD0Z62Y0uY7gIYvxX/uq+IzKSCwB8M2G7Qv9xgZQaQlLpCaeKbux3Y59hHM+KpamGL19Kg==</InverseQ><D>vmaYHEbPAgOJvaEXQl+t8DQKFT1fudEysTy31LTyXjGu6XiltXXHUuZaa2IPyHgBz0Nd7znwsW/S44iql0Fen1kzKioEL3svANui63O3o5xdDeExVM6zOf1wUUh/oldovPweChyoAdMtUzgvCbJk1sYDJf++Nr0FeNW1RB1XG30=</D></RSAKeyValue>";
- RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
- byte[] cipherbytes;
- rsa.FromXmlString(privatekey);
- cipherbytes = rsa.Decrypt(Convert.FromBase64String(content), false);
- return Encoding.UTF8.GetString(cipherbytes);
- }
- #endregion RSA加密解密
- }
C#帮助类:Base64的更多相关文章
- 二进制;16进制; Byte , Python的bytes类; Base64数据编码; Bae64模块;
参考:中文维基 二进制 位操作(wiki) Byte字节 互联网数据处理:Base64数据编码 Python的模块Base64 16进制简介 python: bytes对象 字符集介绍:ascii 二 ...
- Base64加密解密工具类
使用Apache commons codec类Base64进行加密解密 maven依赖 <dependency> <groupId>commons-codec</grou ...
- Java Base64 加密解密
使用JDK的类 BASE64Decoder BASE64Encoder package test; import sun.misc.BASE64Decoder; import sun.misc.BA ...
- Serializable 序列化为字符串 base64
工具类 Base64.java import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import ja ...
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- Java Base64加密解密
使用Apache commons codec 类Base64 maven依赖 <dependency> <groupId>commons-codec</groupId&g ...
- Java的Base64加密原理
出自: http://www.cnblogs.com/winner-0715/p/5920269.html http://www.cnblogs.com/koliop090/p/5203553.h ...
- Base64加密工具
正常来讲加密基本上永远都要伴随着解密,所谓的加密或者解密,往往都需要有一些规则,在JDK1.8开始,提供有新的加密处理操作类,Base64处理类--Base64类 在该类之中存在两个内部类:Base6 ...
- Java开发工具类集合
Java开发工具类集合 01.MD5加密工具类 import java.security.MessageDigest; import java.security.NoSuchAlgorithmExce ...
- Kotlin/Java Base64编码和解码(图片、文件)
原文: Kotlin/Java Base64编码和解码(图片.文件) | Stars-One的杂货小窝 最近在项目中使用到了Base64编码和解码,便是稍微写篇文章记录一下 PS:本文代码都是使用Ko ...
随机推荐
- 【转】在Linux下使用Jmeter执行测试任务
想在Linux下运行jmeter必须先安装jdk,安装步骤如下: (1).下载一个linux可用的jdk包(比如:jdk-6u45-linux-i586.bin), (2).然后将jdk-6u45-l ...
- (转)Docker - 使用 compose 编排服务
在园子里看到了这篇关于 compose 的文章,非常好!!转过来,先附上原文地址 http://www.cnblogs.com/52fhy/p/5991344.html ----- 入门示例 一般步骤 ...
- jenkins学习(1)
(1) 按照JAVA, 增加环境变量JAVA_HOME = C:\Program Files\Java\jdk1.8.0_31 增加环境变量CLASS_PATH = ...
- PHP AST学习
前一阵和前同事交流在检测webshell方面的相关方法,其中提出了使用lex yacc做一套语法解析来解析字节码段来判断是否存在webshell. 后来在查找相关资料中,找到了github开源的一个工 ...
- Java微信公众平台开发--番外篇,对GlobalConstants文件的补充
转自:http://www.cuiyongzhi.com/post/63.html 之前发过一个[微信开发]系列性的文章,也引来了不少朋友观看和点评交流,可能我在写文章时有所疏忽,对部分文件给出的不是 ...
- BeX5 常见问题解决办法
1.获取当前Activity的名称 Activity activity = ProcessUtils.getActivityInProcessContext(); String activityNam ...
- beijing
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<graphics.h> ...
- POJ3017
题意 将一段序列分割为任意段,每一段的连续和不超过M,使得每一段最大值的和最小. 分析 用单调队列进行优化的dp.单调队列可以维护可以影响当前区间的最大值. #include <cstdio&g ...
- opennebula kvm 创建VM oned报错日志
Thu Jul :: [ReM][D]: Req: UID: VirtualMachineDeploy result SUCCESS, Thu Jul :: [TM][D]: Message rece ...
- Hyperledger Fabric1.0 整体结构
整体结构 Hyperledger Fabric 在 1.0 中,架构已经解耦为三部分: fabric-peer:主要起到 peer 作用,包括 endorser.committer 两种角色: fab ...