using System;
using System.Collections.Generic;
using System.Text;namespace MyLibs.encrypt
{public class Base64{private static string base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";//编码后的字符集private static int[] base64DecodeChars = new int[] { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1 };//对应ASICC字符的位置public static string base64encode(string str){ //加密string Out = "";int i = 0, len = str.Length;char c1, c2, c3;while (i < len){c1 = Convert.ToChar(str[i++] & 0xff);if (i == len){Out += base64EncodeChars[c1 >> 2];Out += base64EncodeChars[(c1 & 0x3) << 4];Out += "==";break;}c2 = str[i++];if (i == len){Out += base64EncodeChars[c1 >> 2];Out += base64EncodeChars[((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)];Out += base64EncodeChars[(c2 & 0xF) << 2];Out += "=";break;}c3 = str[i++];Out += base64EncodeChars[c1 >> 2];Out += base64EncodeChars[((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)];Out += base64EncodeChars[((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6)];Out += base64EncodeChars[c3 & 0x3F];}return Out;}public string utf16to8(string str){string Out = "";int i, len;char c;//char为16位Unicode字符,范围0~0xffff,感谢vczh提醒len = str.Length;for (i = 0; i < len; i++){//根据字符的不同范围分别转化c = str[i];if ((c >= 0x0001) && (c <= 0x007F)){Out += str[i];}else if (c > 0x07FF){Out += (char)(0xE0 | ((c >> 12) & 0x0F));Out += (char)(0x80 | ((c >> 6) & 0x3F));Out += (char)(0x80 | ((c >> 0) & 0x3F));}else{Out += (char)(0xC0 | ((c >> 6) & 0x1F));Out += (char)(0x80 | ((c >> 0) & 0x3F));}}return Out;}public static string base64decode(string str){//解密int c1, c2, c3, c4;int i, len;string Out;len = str.Length;i = 0; Out = "";while (i < len){do{c1 = base64DecodeChars[str[i++] & 0xff];} while (i < len && c1 == -1);if (c1 == -1) break;do{c2 = base64DecodeChars[str[i++] & 0xff];} while (i < len && c2 == -1);if (c2 == -1) break;Out += (char)((c1 << 2) | ((c2 & 0x30) >> 4));do{c3 = str[i++] & 0xff;if (c3 == 61) return Out;c3 = base64DecodeChars[c3];} while (i < len && c3 == -1);if (c3 == -1) break;Out += (char)(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));do{c4 = str[i++] & 0xff;if (c4 == 61) return Out;c4 = base64DecodeChars[c4];} while (i < len && c4 == -1);if (c4 == -1) break;Out += (char)(((c3 & 0x03) << 6) | c4);}return Out;}public string utf8to16(string str){string Out = "";int i, len;char c, char2, char3;len = str.Length;i = 0; while (i < len){c = str[i++];switch (c >> 4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7: Out += str[i - 1]; break;case 12:case 13: char2 = str[i++];Out += (char)(((c & 0x1F) << 6) | (char2 & 0x3F)); break;case 14: char2 = str[i++];char3 = str[i++];Out += (char)(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0)); break;}}return Out;}}
}

原文链接: http://blog.csdn.net/vince6799/article/details/6760586

转载于:https://my.oschina.net/chen106106/blog/45798

C# 下base64加密解密实现相关推荐

  1. Java base64加密解密 两种实现方式

    1.为什么要使用Base 64 Base 64主要用途不是加密,而是把一些二进制数转成普通字符,方便在网络上传输. 由于一些二进制字符在传输协议中属于 控制字符,不能直接传送,所以需要转换一下才可以. ...

  2. python编写base64加密解密

    base64加密解密 前言 脚本代码 前言 最近做题一直遇到一些base64代码解码,便想着自己写一个可以进行加密解密的脚本,自己使用 脚本代码 脚本如下: import base64 def b64 ...

  3. linux下的加密解密学习

    linux下的加密解密学习 加密/解密:         加密协议:加密解密使用同一秘钥:3des,aes         公钥加密:公钥私钥对         数字签名,密钥交换          ...

  4. c++字符加密_linux安全Linux下RAR加密解密

    网络拓扑:Linux下RAR加密解密主机用户名:root   密码:123456第一步.打开网络拓扑,进入H-xclient-rar--1虚拟机. 第二步.创建实验文件test.txt,文件内容&qu ...

  5. python下RSA加密解密以及跨平台问题

    项目合作需要,和其他网站通信,消息内容采用RSA加密方式传递.之前没有接触过RSA,于是两个问题出现了: 声明: 环境WIN 7 + python 2.6.6 RSA格式:PEM 一.Python下R ...

  6. javascript base64加密解密

    javascript base64加密解密 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8&q ...

  7. chrome 控制台 base64加密解密

    1.视界 2. 背景 因为在客户机器,要查询base64的解密信息,但是因为内网无法使用网络,只能拷贝软件本想查询插件,后来发现谷歌支持解密 3.方法 在chrome控制台上可以直接使用函数做base ...

  8. ImageUtils.java:图片处理工具类[裁剪/图片水印/文字水印/缩放补白/Base64加密解密]

    用到的jar包: commons-beanutils-1.8.0.jar commons-codec-1.10.jar package com.zhenzhigu.commons.util;   im ...

  9. 在线base64加密解密工具

    在线base64加密解密工具 在线base64加密解密工具 本工具支持对字符串进行base64加密和解密(严格来说,只能算是字符串编码),纯客户端计算,数据不会上传到服务器中,请放心使用. https ...

最新文章

  1. ai 临摹图片换背景_AI临摹绘制插画图片
  2. _catboost.CatBoostError: C:/Program Files (x86)/Go Agent/pipelines/BuildMaster/catboost.git/catboost
  3. Zookeeper 的典型应用场景场景
  4. Netty 使用总结
  5. 用 Flask 来写个轻博客 (20) — 实现注册表单与应用 reCAPTCHA 来实现验证码
  6. 最小二乘法的本质原理
  7. 高德地图定位误差_【“怼”上了,四川景区一度建议别用高德地图】导航定位错误引用户到封闭区域,致拥堵!高德地图道歉,已更正!...
  8. C++职工信息管理系统
  9. apache如何支持asp.net
  10. PHP非对称加密:RSA (RSA/ECB/PKCS1Padding)+base64_encode/bin2hex加密
  11. tar 备份时如何保持权限
  12. 洛谷 P2341 [HAOI2006]受欢迎的牛 解题报告
  13. 2017初赛普及c语言答案,NOIP2017初赛普及组C++试题
  14. ntfs格式硬盘如何读写mac苹果电脑
  15. 开发一款游戏需要什么技术
  16. 邮件html签名手机电脑不一致,HTML电子邮件签名不能在iPhone上正确渲染
  17. 谷歌用AI技术预测病患死亡时间 到底是福是祸?
  18. 公众号识别用户进入发送信息
  19. 【生活】如何线上办理持有广州社保人员的异地分娩医保登记 - 定点医院 - 异地就医报销相关
  20. python地形图渲染_地形渲染之彩色地形图(Painted Relief Map)

热门文章

  1. Flutter-阿里P7告诉我的屏幕适配终极方案!!!
  2. ABP Web开发入门-去掉多语言菜单项
  3. linux卸载metasploit,Linux安装Metasploit
  4. vue显示文本过长,超出部分省略号显示,悬停提示全部
  5. BTC闪崩闪跳:什么「交易策略」能让交易员减少资金损失?
  6. 帷幄DAM - 数据资产管理方案 数据中台资产管理
  7. 怎么把bmp转换成pdf?bmp转pdf格式软件推荐
  8. ON1 Photo RAW 2018 for Mac v2018.1 照片编辑 PS滤镜插件
  9. Manjaro尝鲜体验
  10. python圣经是什么_GitHub标星6000+!Python带你实践机器学习圣经PRML