国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java base64編碼和解碼

這篇具有很好參考價(jià)值的文章主要介紹了java base64編碼和解碼。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

Base64 編碼會(huì)將字符串編碼得到一個(gè)含有 A-Za-z0-9+/ 的字符串。

base64 編碼和解碼網(wǎng)上有些地方稱為 base64 加密和解密,這是不準(zhǔn)確的。base64 是不能用來加密和解密的,它只是一種編碼解碼方式,不能用于加密和解密,如果你想加密和解密可以選擇如 AES、RSA 等加密算法。

標(biāo)準(zhǔn)的 Base64 并不適合直接放在 URL 里傳輸,因?yàn)閁RL編碼器會(huì)把標(biāo)準(zhǔn) Base64 中的“/”和“+”字符變?yōu)樾稳?“%XX” 的形式,而這些 “%” 號(hào)在存入數(shù)據(jù)庫(kù)時(shí)還需要再進(jìn)行轉(zhuǎn)換,因?yàn)?ANSI SQL 中已將“%”號(hào)用作通配符。

一、base64編碼和解碼

1.標(biāo)準(zhǔn)的 base64 有填充的編碼與解碼

在 Base64 編碼中,輸出編碼字符串的長(zhǎng)度必須是 3 的倍數(shù)。如果不是 3 的倍數(shù)編碼器會(huì)根據(jù)需要在編碼結(jié)尾添加一個(gè)或兩個(gè)填充字符 “=” 以滿足此要求。在解碼時(shí),解碼器會(huì)丟棄結(jié)尾的那些額外的填充字符進(jìn)行解碼。

開發(fā)中一般都使用此方法進(jìn)行 base64 編碼與解碼,就像下面這樣:

        //Base64編碼
        String str = "hello!你好,小明!哈/哈哈,你去哪?sgdr56+=/*&yyy測(cè)試,base64測(cè)試加密解密hgdjuytiytiuyuytiuyirytr";
        String encodedString = Base64.getEncoder().encodeToString(str.getBytes());
        //輸出:aGVsbG8h5L2g5aW9LOWwj+aYju+8geWTiC/lk4jlk4jvvIzkvaDljrvlk6rvvJ9zZ2RyNTYrPS8qJnl5eea1i+ivle+8jGJhc2U2NOa1i+ivleWKoOWvhuino+WvhmhnZGp1eXRpeXRpdXl1eXRpdXlpcnl0cg==
        System.out.println(encodedString); 

        //Base64解碼
        byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
        String decodedString = new String(decodedBytes);
         //輸出:hello!你好,小明!哈/哈哈,你去哪?sgdr56+=/*&yyy測(cè)試,base64測(cè)試加密解密hgdjuytiytiuyuytiuyirytr
        System.out.println(decodedString);

你會(huì)發(fā)現(xiàn)上面的標(biāo)準(zhǔn)的 base64 編碼后的字符串除了大小寫字母和數(shù)字還會(huì)有 +、/ 這兩個(gè)符號(hào),這不太適合用于 url 傳輸或作為 url 中的參數(shù),就像前言中說的那樣,如果要用于 url,可以采用 getUrlEncoder 和 getUrlDecoder 的 base64 編碼:

        //Base64編碼
        String str = "hello!你好,小明!哈/哈哈,你去哪?sgdr56+=/*&yyy測(cè)試,base64測(cè)試加密解密hgdjuytiytiuyuytiuyirytr";
        String encodedString = Base64.getUrlEncoder().encodeToString(str.getBytes());
         //輸出:aGVsbG8h5L2g5aW9LOWwj-aYju-8geWTiC_lk4jlk4jvvIzkvaDljrvlk6rvvJ9zZ2RyNTYrPS8qJnl5eea1i-ivle-8jGJhc2U2NOa1i-ivleWKoOWvhuino-WvhmhnZGp1eXRpeXRpdXl1eXRpdXlpcnl0cg==
        System.out.println(encodedString);

        //Base64解碼
        byte[] decodedBytes = Base64.getUrlDecoder().decode(encodedString);
        String decodedString = new String(decodedBytes);
        //輸出:hello!你好,小明!哈/哈哈,你去哪?sgdr56+=/*&yyy測(cè)試,base64測(cè)試加密解密hgdjuytiytiuyuytiuyirytr
        System.out.println(decodedString); 

2. base64無填充的編碼與解碼

無填充的編碼編碼后的字符串結(jié)尾不會(huì)添加 “=” 字符。

		//Base64編碼
		String str = "hello!你好,小明!";
        String encodedString = Base64.getEncoder().withoutPadding().encodeToString(str.getBytes());
        System.out.println(encodedString); //aGVsbG8h5L2g5aW9LOWwj+aYju+8gQ

        //Base64解碼
        byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
        String decodedString = new String(decodedBytes);
        System.out.println(decodedString); //hello!你好,小明!

注意:

除了上面介紹的 Base64 類進(jìn)行 base64 編碼和解碼,jdk 的 BASE64Decoder 類也提供了 base64 編碼和解碼。
但是不推薦使用 BASE64Decoder 類進(jìn)行編碼和解碼。
因?yàn)?BASE64Decoder 是對(duì)MIME友好的,編碼后的字符串如果超過76個(gè)字符就會(huì)換行,所以 BASE64Decoder 編碼后的字符串會(huì)后 \n\r 這樣的字符,在一些處理 \n\r 的代碼里可能會(huì)有問題。如果你非要使用 BASE64Decoder 類進(jìn)行編碼和解碼,請(qǐng)使用replaceAll(“\r|\n”, “”) 對(duì)編碼后的 \n和 \r 進(jìn)行替換。

二、MIME友好型base64編碼和解碼

MIME 友好型 base64 編碼和解碼即編碼后如果長(zhǎng)度每大于 76 就會(huì)加入 \r\n 這樣的換行控制符文章來源地址http://www.zghlxwxcb.cn/news/detail-556267.html

		//Base64編碼
		String str = "727dced7-15c7-48c6-bb11-416ab51f98bc-2a19434a-3a64-496e-b07b-b51b0445384c-22525be7-82c7-4a72-8594-238712d4d59e";
        byte[] encodedAsBytes = str.getBytes();
        String encodedMime = Base64.getMimeEncoder().encodeToString(encodedAsBytes);
        System.out.println("編碼:"+encodedMime);

        //Base64解碼
        byte[] decodedBytes = Base64.getMimeDecoder().decode(encodedMime);
        String decodedMime = new String(decodedBytes);
        System.out.println("解碼:"+decodedMime); //727dced7-15c7-48c6-bb11-416ab51f98bc-2a19434a-3a64-496e-b07b-b51b0445384c-22525be7-82c7-4a72-8594-238712d4d59e

到了這里,關(guān)于java base64編碼和解碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • opensl學(xué)習(xí)——base16編碼解碼、base64編碼解碼、ASCII碼表、擴(kuò)展ASCII碼

    opensl學(xué)習(xí)——base16編碼解碼、base64編碼解碼、ASCII碼表、擴(kuò)展ASCII碼

    ASCII(American Standard Code for Information Interchange,美國(guó)信息互換標(biāo)準(zhǔn)代碼)是一套基于拉丁字母的字符編碼,共收錄了 128 個(gè)字符,用一個(gè)字節(jié)就可以存儲(chǔ),它等同于國(guó)際標(biāo)準(zhǔn) ISO/IEC 646。 ASCII 編碼于 1967 年第一次發(fā)布,最后一次更新是在 1986 年,迄今為止共收錄了 128 個(gè)字符,包

    2024年02月07日
    瀏覽(43)
  • JS Base64編碼和解碼

    Base64 是一種編碼方式,可以將任意字符(包括二進(jìn)制字符流)轉(zhuǎn)成可打印字符。JavaScript 定義了兩個(gè)與 Base64 相關(guān)的全局方法。 btoa():字符串或二進(jìn)制值轉(zhuǎn)為 Base64 編碼。 atob():把 Base64 編碼轉(zhuǎn)為原來的字符。 Base64 方法不能夠操作非 ASCII 字符。 示例 要將非 ASCII 碼字符轉(zhuǎn)為

    2024年02月16日
    瀏覽(19)
  • Python中的Base64編碼和解碼

    Python3中Base64編碼和解碼,使用的是base64模塊中的b64encode 和 b64decode方法,關(guān)于怎么使用,首先查看源碼中的說明: b64encode : Encode the bytes-like object s using Base64 and return a bytes object b64decode : Decode the Base64 encoded bytes-like object or ASCII string s… The result is returned as a bytes object. 要點(diǎn)

    2024年02月13日
    瀏覽(20)
  • 前端Base64 編碼和解碼的使用方法

    使用 Base64 類從 ‘js-base64’ 庫(kù)進(jìn)行 Base64 編碼和解碼 vue: 使用 npm 或 yarn 包管理器來安裝‘js-base64’ 庫(kù) 原生: 通過 vue: 導(dǎo)入 Base64 類: 或者: vue: Base64 編碼的使用示例: Base64 解碼的使用示例: 或者,導(dǎo)入 encode 和 decode 函數(shù): Base64 編碼的使用示例: Base64 解碼的使用示例

    2024年02月07日
    瀏覽(26)
  • base64加密解密

    base64加密解密過程 Base64會(huì)使用一串固定編碼: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ 加密過程 想要使用Base64加密,原文長(zhǎng)度必須是3的倍數(shù)。如果原文不是3的倍數(shù)就填充其他符號(hào)來湊足成3的倍數(shù); 1,將明文對(duì)照以ACSSI碼表轉(zhuǎn)換成一個(gè)8位二進(jìn)制數(shù); 2,將轉(zhuǎn)換后的數(shù)

    2024年02月04日
    瀏覽(25)
  • base4解密(Base64加密算法)

    base64解密解碼轉(zhuǎn)換說明: 1、Base64編碼要求把3個(gè)8位字節(jié)(3*8=24)轉(zhuǎn)化為4個(gè)6位的字節(jié)(4*6=24),之后在6位的前面補(bǔ)兩個(gè)0,形成8位一個(gè)字節(jié)的形式。如果剩下的字符不足3個(gè)字節(jié),則用0填充,輸出字符使用‘=’,因此編碼后輸出的文本末尾可能會(huì)出現(xiàn)1或2個(gè)‘=’。 2、為了保

    2024年02月16日
    瀏覽(25)
  • 【JS】實(shí)現(xiàn) Base64 編碼和解碼(及中文亂碼問題)

    JavaScript 定義了兩個(gè)與 Base64 相關(guān)的全局方法。 遇到中文編碼需要先做一次 URI 組件編碼或?qū)獯a后的內(nèi)容進(jìn)行 URI 解碼 示例:Base64 編碼 示例:Base64 解碼 中文亂碼處理方法: 按照 Base64 插件:編解碼: js-base64 ,判斷是否是Base64編碼格式: is-base64 插件使用

    2024年02月15日
    瀏覽(25)
  • php的Url 安全的base64編碼解碼類

    2024年02月04日
    瀏覽(23)
  • base64與BytesIO圖片進(jìn)行編碼、解碼;api調(diào)用

    base64與BytesIO圖片進(jìn)行編碼、解碼;api調(diào)用

    io.BytesIO 和 Base64 編碼都是用于在內(nèi)存中處理二進(jìn)制數(shù)據(jù)的方法,但它們的目的和使用場(chǎng)景有所不同。 1) io.BytesIO io.BytesIO 是 Python io 庫(kù)中的一個(gè)類,它提供了一個(gè)在內(nèi)存中處理二進(jìn)制數(shù)據(jù)的接口,模擬了一個(gè)文件對(duì)象。它允許你像操作文件一樣操作內(nèi)存中的二進(jìn)制數(shù)據(jù),這對(duì)

    2024年01月24日
    瀏覽(29)
  • 利用Base64加密算法將數(shù)據(jù)加密解密

    利用Base64加密算法將數(shù)據(jù)加密解密

    Base64準(zhǔn)確來說并不像是一種加密算法,而更像是一種編碼標(biāo)準(zhǔn)。 我們知道現(xiàn)在最為流行的編碼標(biāo)準(zhǔn)就是ASCLL,它用八個(gè)二進(jìn)制位(一個(gè)char的大?。┍硎玖?27個(gè)字符,任何二進(jìn)制序列都可以用這127個(gè)字符表示出來。 而Base64則是用6個(gè)二進(jìn)制位表示了64個(gè)字符,也就是說,任何的

    2024年04月09日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包