多种语言实现Base64编码解码
由于长度限制,上篇《网络信息传输编码解码》只介绍了编码解码的原理,本篇将把c#,vc,vb,delphi,php,python,asm 等语言的程序代码列于此,有些是从网上搜来的,供大家参考:
一。系统自带函数:
1.c#
//base64 编码 解码 系统函数
//编码
byte[] bytes = Encoding.Default.GetBytes("要转换的字符串");//我是中国人ce d2 ca c7 d6 d0 b9 fa c8 cb
string b64 = Convert.ToBase64String(bytes);//"ztLKx9bQufrIyw==" 是 "我是中国人" base64的编码
//解码
byte[] oo = Convert.FromBase64String(b64);//
string vv =Encoding.Default.GetString ( oo); ;
2. PHP 系统有两个函数可以很方便地实现解码:base64_decode()与quoted_printable_decode(),前者可用于base64 编码的解码,后者是用于 QP 编码方法的解码。
3. python 代码 转换到base64 和qp :
someBytes.append("x01xFFx41x42x43xC0xC1xC2x61x62x63",11)
print someBytes.getEncoded("base64")
print someBytes.getEncoded("qp")
二。编写函数
1. C# 编码解码 base64
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace base64WindowsApplication17
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string yy="我是中国人";
string be = Class1.Base64Code(yy);
string de = Class1.Base64Decode(be);
MessageBox.Show(yy+ " " + be+ " "+ de);
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace base64WindowsApplication17
{
class Class1
// public class Base64Protector
{
/// <summary>
/// Base64加密
/// </summary>
/// <param name="Message">需要加密的字符串</param>
/// <returns>加密后的字符串</returns>
static public 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","0","1","2","3","4","5","6","7",
"8","9","+","/","="};
byte empty = (byte)0;
System.Collections.ArrayList byteMessage = new System.Collections.ArrayList(System.Text.Encoding.Default.GetBytes(Message));
System.Text.StringBuilder outmessage;
int messageLen = byteMessage.Count;
int page = messageLen / 3;
int use = 0;
if ((use = messageLen % 3) > 0)
{
for (int i = 0; i < 3 - use; i++)
byteMessage.Add(empty);