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

base64加密

發布時間: 2022-01-10 17:03:42

① 為什麼我用Base64加密後,不能將它解密

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

② 如何將base64加密的字元串轉換成image顯示在網頁上

import sun.misc.BASE64Encoder;
public static boolean GenerateImage(String imgStr, String imgFilePath) {
if (imgStr == null) // 圖像數據為空
return false;
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解碼
byte[] bytes = decoder.decodeBuffer(imgStr);
for (int i = 0; i < bytes.length; ++i) {
if (bytes[i] < 0) {// 調整異常數據
bytes[i] += 256;
}
}
// 生成jpeg圖片
OutputStream out = new FileOutputStream(imgFilePath);
out.write(bytes);
out.flush();
out.close();
return true;
} catch (Exception e) {
return false;
}
}

③ base64加密的結果還是字元串嗎

base64加密的結果還是字元串嗎
首先,Base64算不上是一種加密演算法。

Base64是網路上最常見的用於傳輸8Bit位元組代碼的編碼方式之一,它的目的是用ASCII中定義的可見字元去表示任意的二進制數據。之所以要這樣做,是因為計算機中很多數據是只能通過可見字元去傳輸的(比如我們的網站網址,比如一些面向字元的網路協議如SMTP等),但是這些情景有時由需要去傳輸二進制數據。基於這樣的需要,誕生了Base64.
簡單來講,Base64就是用下列總計64個字元:
A-Z
a-z
0-9
+
/
去表示二進制數據。二進制數據以位元組為組,一個位元組8bit存在256個狀態,而一個Base64字元只有64個狀態。機智的人們於是規定,用每4個Base64字元去表示3個二進制位元組,因為:

64 * 64 * 64 * 64 = 256 * 256 * 256

因此,Base64字元串的長度必然是4的整數倍。此外,由於二進制的位元組數不一定是3的整數倍,所以Base64字元串在結尾是可能有空的。這些空的狀態,Base64引入第65個字元去表示:

=

這也是為什麼Base64很多都是以=或==結尾的。但是注意,也存在不以=或==結尾的Base64,只要編碼的二進制位元組數恰好被3給整除。

④ base64 加密後可以還原回去,這種加密不就沒有安全性可言了

base64是一種編碼方式,編碼演算法完全公開,所以逆向解碼即可
而不是一種加密演算法

⑤ base64加密比原來的數據長度增加多少

首先Base64不是一種加密方式,只是一種編碼。。然後長度呢,就是原來長度 * (4 / 3),不計最後一個或兩個等於號的話。

⑥ 怎麼用base64加密字元串

base64的作用不是加密,而是用來避免「位元組」中不能轉換成可顯示字元的數值。 比如0-32的控制字元,空格,製表符都不能被列印在紙上,base64隻使用大寫小寫數字標點。 可以列印在紙上,數據可以在傳統平面媒介上攜帶。 md5是散列函數,提取數據的特徵,輸出是不可逆的散列值,用於代表某信息A而又不暴露信息A的內容。不直接用於加密文件。

⑦ 如何判斷一個字元串是否經過base64加密過

1.標准base64隻有64個字元(英文大小寫、數字和+、/)以及用作後綴等號;
2.base64是把3個位元組變成4個可列印字元,所以base64編碼後的字元串一定能被4整除(不算用作後綴的等號);
3.等號一定用作後綴,且數目一定是0個、1個或2個。這是因為如果原文長度不能被3整除,base64要在後面添加\0湊齊3n位。為了正確還原,添加了幾個\0就加上幾個等號。顯然添加等號的數目只能是0、1或2;
4.嚴格來說base64不能算是一種加密,只能說是編碼轉換。使用base64的初衷。是為了方便把含有不可見字元串的信息用可見字元串表示出來,以便復制粘貼;

⑧ 如何用asp進行base64加密

我猜你是想加密伺服器和客戶端之間傳送的內容吧。
PHP手冊裡面搜base64_decode ,base64_encode就有相關函數的介紹
網頁內容到了瀏覽器是需要JS解密的

⑨ 易語言 Base64的加密演算法

代碼-----------.版本 2.子程序 Base64編碼, 位元組集, 公開
.參數 原文, 位元組集
.局部變數 余數, 整數型
.局部變數 三位元組數據, 位元組型, , "3"
.局部變數 碼表, 位元組集
.局部變數 len_x, 整數型
.局部變數 len_y, 整數型
.局部變數 結果, 位元組集
.局部變數 i, 整數型
.局部變數 k, 整數型len_x = 取位元組集長度 (原文)
.如果真 (len_x < 1)
返回 ({ })
.如果真結束
余數 = len_x % 3
.如果真 (余數 > 0)
原文 = 原文 + 取空白位元組集 (3 - 余數)
len_x = len_x + 3 - 余數
.如果真結束
len_y = len_x × 4 ÷ 3
結果 = 取空白位元組集 (len_y)
i = 1
碼表 = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47 }
.變數循環首 (1, len_x, 3, k)
三位元組數據 [1] = 原文 [k]
三位元組數據 [2] = 原文 [k + 1]
三位元組數據 [3] = 原文 [k + 2]
結果 [i] = 碼表 [右移 (三位元組數據 [1], 2) + 1]
結果 [i + 1] = 碼表 [左移 (位與 (三位元組數據 [1], 3), 4) + 右移 (三位元組數據 [2], 4) + 1]
結果 [i + 2] = 碼表 [左移 (位與 (三位元組數據 [2], 15), 2) + 右移 (三位元組數據 [3], 6) + 1]
結果 [i + 3] = 碼表 [位與 (三位元組數據 [3], 63) + 1]
i = i + 4
.變數循環尾 ()
.判斷開始 (余數 = 2)
結果 [len_y] = 61
.判斷 (余數 = 1)
結果 [len_y] = 61
結果 [len_y - 1] = 61
.默認.判斷結束
返回 (結果).子程序 _按鈕1_被單擊編輯框1.加入文本 (到文本 (Base64編碼 (到位元組集 (編輯框1.內容))))
希望我可以幫到你

⑩ 如何使用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;
}
}

}
}

熱點內容
主流可編譯語言 發布:2024-11-15 00:42:23 瀏覽:729
excel緩存清除 發布:2024-11-15 00:39:53 瀏覽:486
機械鍵盤可編程 發布:2024-11-15 00:39:09 瀏覽:912
php判斷字元開頭 發布:2024-11-15 00:35:33 瀏覽:507
網易蘋果游戲怎麼轉移到安卓 發布:2024-11-15 00:07:52 瀏覽:270
win7php環境搭建 發布:2024-11-15 00:06:55 瀏覽:17
erpjava 發布:2024-11-14 23:52:23 瀏覽:253
電腦版地平線四怎麼連上伺服器 發布:2024-11-14 23:46:42 瀏覽:472
ios怎麼變安卓 發布:2024-11-14 23:46:36 瀏覽:333
win7共享xp列印機拒絕訪問 發布:2024-11-14 23:45:29 瀏覽:750