java加密基礎(一) —— BASE64編碼

來源:互聯網
上載者:User

標籤:junit   exception   基礎   byte   log   decode   oid   ==   第三章   

  工作之後第一次接觸到java加密機制,當時需求是使用RSA做數位簽章。當時看到之後一臉懵逼,就查了各種資料。

  對於學習過程中我走了不少彎路,主要是因為不知道先看什麼在看什麼。下面說一下我的學習經曆

  首先,要瞭解BASE64演算法,因為java加密基本上都用到了BASE64;然後就是對稱式加密和非對稱式加密了(下一章節著重介紹,這裡就不多做描述了);最後就是瞭解下數位簽章(會在第三章節中介紹到)

       我們都知道ASCII字元一共有256,而電腦記錄資料的方式只有0、1,所以就只能使用8bit才能表示一個ASCLL字元。BASE64顧名思義一共有64個字元,所以只需要6bit就可以表示了。那麼BASE64是怎麼表示ASCLL的全部字元的哪?8和6的最小公倍數 是24,也就是說3個ASCII字元可以由4個BASE64字元來表示,保證有效位元是一樣的。也就是說每四位BASE64作為一組,也就是24bit位一組,如果在最後發現不足24bit了怎麼辦哪?下面做下解釋:

該圖表示的是正好24bit時BASE64的解析編碼方式。

該圖中A的BASE64編碼的表示為QQ,因為只有8bit,對應的BASE64隻剩下2bit了,所以要補4個0,所以就成了QQ。原則是Base64字元的最小單位是四個字元一組,所以對於不足四個字元的就用=填充,因此BASE64隻可能在最後出現一個或兩個=,對於在解析時不解析=就可以了。

最後做一個java中對BASE64的編碼及解析

import java.io.IOException;

import org.junit.Test;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class Demo1 {
@Test
public void demo1() throws IOException{
String str = "hello world!"; //aGVsbG8gd29ybGQhMQ==
BASE64Encoder encode = new BASE64Encoder(); //aGVsbG8gd29ybGQh
String encodeStr = encode.encode(str.getBytes());
System.out.println(encodeStr);
BASE64Decoder decoder = new BASE64Decoder();
String decoderStr = new String(decoder.decodeBuffer(encodeStr));
System.out.println(decoderStr);
}
}

 

java加密基礎(一) —— BASE64編碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.