當前位置:首頁 » 密碼管理 » base64加密解密

base64加密解密

發布時間: 2022-05-22 08:41:25

『壹』 javascript是不是自帶了base64加密、解密函數是什麼

是的,解密函數為:

window.btoa("test");//"dGVzdA=="
window.atob("dGVzdA==");//"test"

為什麼要使用Base64加密呢?

『貳』 JAVA怎麼樣實現Base64加密解密

package test;
import java.io.IOException;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class Test {
public static void main(String[] args) {
String str = "java12345";
String ret = null;
ret = new BASE64Encoder().encode(str.getBytes());
System.out.println("加密前:"+str+" 加密後:"+ret);
str = "amF2YTEyMzQ1";
try {
ret = new String(new BASE64Decoder().decodeBuffer(str));
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("解密前:"+str+" 解密後:"+ret);
}
}

『叄』 為什麼我用Base64加密後,不能將它解密

base64編碼,不能算加密碼,因為沒有密鑰。就是說誰都可以解碼。
至於你說的不能解碼,只能猜測是你的解碼演算法不正確。
網路上有關於base64的詳細解釋,應該對你有幫助。

『肆』 關於base64、md5等加密解密問題

base64的作用不是加密,而是用來避免「位元組」中不能轉換成可顯示字元的數值。
比如0-32的控制字元,空格,製表符都不能被列印在紙上,base64隻使用大寫小寫數字標點。
可以列印在紙上,數據可以在傳統平面媒介上攜帶。

md5是散列函數,提取數據的特徵,輸出是不可逆的散列值,用於代表某信息A而又不暴露信息A的內容。不直接用於加密文件。

『伍』 關於c#base64加密解密的問題

cWF6MzIx是UTF8得到的結果,cQBhAHoAMwAyADEA是Unicode得到的結果,編碼不同,所以結果不同。

『陸』 關於WebSafeBase64的加密和解密,求解答

前端使用js: pwd = new Base64.encode(pwd);
後端使用java, new Base64().decodeBase64(pwd.getBytes()).toString();
java的Base64()有提供decode和decodeBase64()這倆種方法,我習慣的以為是decode(),結果卻是後者.

『柒』 如何使用Base64進行加密和解密

其實Base64的加密和解密的演算法不是很復雜,首先是定義自己64位的密鑰,64個字元是固定,但是順序是可以隨自己的設計而變化。例如:
char[] BaseTable=new char[64]{
'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','+','/'};

接下來,在加密的時候就是對於需要加密的每個字元,通過一定的演算法,轉換成上面64字元的一種;而在解密的時候則是把64字元中任意一個字元反算出加密前的字元。對於每個字元的操作有很多方法,這里就不一一介紹了。需要注意的是「=」字元,在Base64加密演算法中,是很重要的,它是起到補零作用。

以下是完整代碼:
//----------------------------- Base64 class --------------------------------------
//---------------------------------------------------------------------------------
//---File:clsBase64
//---Description:The class file to encode string or decode string in base algorith
//---Author:Knight
//---Date:Oct.8, 2005
//---------------------------------------------------------------------------------
//----------------------------{ Base64 class }-------------------------------------
using System;

namespace Base64
{
/// <summary>
/// Summary description for clsBase64.
/// </summary>
public class clsBase64
{
private char[] source;
private char[] lookupTable;
private int length, length2, length3;
private int blockCount;
private int paddingCount;

public clsBase64()
{
//
// TODO: Add constructor logic here
//
source = null;
length = length2 = length3 =0;
blockCount = 0;
paddingCount = 0;
}

/// <summary>
/// Create base64 char array using default base64 char array
/// </summary>
/// <param name="CreatePara"></param>
/// <returns>return the new base64 char array</returns>
private char[] CreateBase64Char( ref char[] CreatePara )
{
char[] BaseTable=new char[64]{
'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','+','/'};

const int CREATE_TYPE = 8;
byte bParaValue = 0;
byte bTemp;
for( int i = 0; i < CreatePara.Length; i++ )
{
bTemp = ( byte )( CreatePara[i] );
switch( bTemp % CREATE_TYPE )
{
case 1:
// 00000001
bTemp =( byte )( bTemp ^ 0x01 );
break;
case 2:
// 00000010
bTemp =( byte )( bTemp ^ 0x02 );
break;
case 3:
// 00000100
bTemp =( byte )( bTemp ^ 0x04 );
break;
case 4:
// 00001000
bTemp =( byte )( bTemp ^ 0x08 );
break;
case 5:
// 00010000
bTemp =( byte )( bTemp ^ 0x10 );
break;
case 6:
// 00100000
bTemp =( byte )( bTemp ^ 0x20 );
break;
case 7:
// 01000000
bTemp =( byte )( bTemp ^ 0x40 );
break;
default:
// 10000000
bTemp =( byte )( bTemp ^ 0x80 );
break;
}
bParaValue =( byte )( bParaValue ^ bTemp );
}

char chrTemp;
int nIndex;
switch( bParaValue % CREATE_TYPE )
{
case 1:
// Exechange 0 <--> 1, 2 <--> 3, 4 <--> 5, 6 <--> 7
for( int i = 0; i < BaseTable.Length / CREATE_TYPE; i++ )
{
nIndex = i * CREATE_TYPE;
chrTemp = BaseTable[nIndex];
BaseTable[nIndex] = BaseTable[nIndex + 1];
BaseTable[nIndex + 1] = chrTemp;
chrTemp = BaseTable[nIndex + 2];
BaseTable[nIndex + 2] = BaseTable[nIndex + 3];
}
//remove paddings
length3=length2-paddingCount;
byte[] result=new byte[length3];

for(int x=0;x<length3;x++)
{
result[x]=buffer2[x];
}

return result;
}

private byte char2sixbit(char c)
{
if( c=='=' )
return 0;
else
{
for (int x=0;x<64;x++)
{
if (lookupTable[x]==c)
return (byte)x;
}
//should not reach here
return 0;
}
}

}
}

『捌』 base64的加密解密例子

加密:
如:數據 1100 0001,1100 0010,1100 0011
3Byte的數據加密成4Byte數據,演算法是把3B(24bit)的數分為4組每組6bit,每組前面加2位0
110000=》0011 0000
011100=》0001 1100
001011=》0000 1011
000011=》0000 0011

解密就是 反過來算

『玖』 我有一段base64 的加密原文,但是我怎麼判斷解密後有無數據丟失

沒有辦法的,base64是沒有措施保證解密後的密文數據完整性的。
它設計的主要目的是,把8位完整的位元組,轉換為電話線上可傳輸的ASCII字元。
是為了適應早期互聯網設備的復雜傳輸狀態的。
根本沒考慮完整性的需求,完整性,以解密後原文自身保證
現在的電子郵件協議啥的採取BASE64隻不過是為了兼容而設置的。
懂了么?

『拾』 base64編碼加密解密程序,輸出有亂碼,為什麼

這個我也碰到過,要用memset(m_strUserName,0,sizeof(m_strUserName))來初始化m_strUserName數組.

熱點內容
centos使用python 發布:2024-05-18 23:39:48 瀏覽:866
幻影天龍腳本 發布:2024-05-18 23:38:17 瀏覽:711
編程的py 發布:2024-05-18 23:36:22 瀏覽:73
安卓系統怎麼改序列號 發布:2024-05-18 23:28:16 瀏覽:782
c語言中實數 發布:2024-05-18 23:21:03 瀏覽:894
伺服器搭建題目 發布:2024-05-18 23:01:29 瀏覽:27
下載武裝突襲後怎麼進伺服器 發布:2024-05-18 22:56:17 瀏覽:825
c語言字元串大寫變小寫 發布:2024-05-18 22:56:16 瀏覽:438
重啟刪除的文件夾 發布:2024-05-18 22:34:11 瀏覽:638
視頻軟體源碼 發布:2024-05-18 22:22:24 瀏覽:429