文件加密

1. 保護(hù)隱私數(shù)據(jù)不被未授權(quán)訪問掰伸;

什么是加密

1. 保護(hù)隱私數(shù)據(jù)不被未授權(quán)訪問站辉;

2. 用于隱藏真實(shí)數(shù)據(jù),進(jìn)行安全的數(shù)據(jù)傳遞兑巾;

3. 避免數(shù)據(jù)被第三方截獲条获;

2. 用于隱藏真實(shí)數(shù)據(jù),進(jìn)行安全的數(shù)據(jù)傳遞闪朱;

3. 避免數(shù)據(jù)被第三方截獲月匣;

古代加密方式:置換(反序,替換)

加密算法的歷史

古代加密方式:置換(反序奋姿,替換)

現(xiàn)代加密算法:帶密碼的加密锄开、兩套密碼的加密、動(dòng)態(tài)密碼加密称诗。

現(xiàn)代加密:對稱加密萍悴、非對稱加密

現(xiàn)代加密算法:帶密碼的加密、兩套密碼的加密寓免、動(dòng)態(tài)密碼加密癣诱。

現(xiàn)代加密:對稱加密、非對稱加密

1. 能否通過一個(gè)密碼進(jìn)行加密和解密的操作袜香,如果能就是對稱加密撕予。

對稱加密

1. 能否通過一個(gè)密碼進(jìn)行加密和解密的操作,如果能就是對稱加密蜈首。

2. 對稱加密都有密碼实抡。

3. 常用的加密方式DES, AES

2. 對稱加密都有密碼。

3. 常用的加密方式DES, AES

DES 加密算法

說明

DES 通過密碼欢策,對數(shù)據(jù)進(jìn)行大量循環(huán)方式的異或

操作吆寨,從而生成加密后的數(shù)據(jù)。

DES對數(shù)據(jù)依次進(jìn)行加密踩寇,一次加密是8個(gè)字節(jié)一起

因此啄清,DES密碼,必須是64bit俺孙,也就是8個(gè)字節(jié)

DES加密實(shí)現(xiàn)

1. DES加密之后的數(shù)據(jù)辣卒,不能夠直接生成字符串的;

2. 加密: ?M 明文鼠冕, K 12345678, D 加密后數(shù)據(jù)

D = DES(M, K) 用K密碼對M進(jìn)行加密生成D

3. 解密:M = DES(D, K)

4. 這種可以通過相同的密碼進(jìn)行加密和解密的叫做對稱加密添寺。

DES API

1. Cipher 加密/解密引擎,用于實(shí)際的處理

2. cipher.init(int mode, Key key) 設(shè)置加密還是解密

3. Key 對于DES需要使用 SecretKeyFactory 進(jìn)行密碼創(chuàng)建

創(chuàng)建密碼對象用的是 DESKeySpec

4. Cipher update(byte[]) 每次調(diào)用都會返回一部分處理的數(shù)據(jù)懈费,DES API doFinal 就只能返回最后一次的數(shù)據(jù)计露,不是完整的,

5. DES 加密推薦使用 doFinal 來完成。

DESede 加密方式

對于DES 或者 DESede 而言票罐,如果實(shí)現(xiàn)DESede的話叉趣,那么:Cipher 算法調(diào)整為 DESede,SecretKeyFactory制定的算法该押,同樣調(diào)整為 DESede, 其中需要使用 DESedeKeySpec 生成密碼疗杉,而且密碼的長度 24個(gè)字節(jié)。

AES 加密算法

特點(diǎn)

1. 速度快

2. 強(qiáng)度高

3. Java中默認(rèn)支持 AES 128bit 加密

AES 256bit 美國軍方的標(biāo)準(zhǔn)蚕礼;

AES 256bit 需要美國出口許可證才可以用烟具。

DES, AES 特性 - 分塊加密

Padding: 加密的時(shí)候,分塊是數(shù)據(jù)按照固定長度一塊一塊處理奠蹬,可以通過 Cipher 參數(shù)進(jìn)行分塊的控制

NoPadding:如果數(shù)據(jù)不是塊長度的倍數(shù)朝聋,那么不會填充

一般情況下,填充會自動(dòng)向數(shù)據(jù)后面添加 字節(jié)0 補(bǔ)齊

AES 常用的Cipher算法

1. AES 默認(rèn)可以使用囤躁,有時(shí)也會出現(xiàn)BadPaddingException,不建議使用

2. AES/ECB/PKCS5Padding ?另外一種AES 加密形式冀痕,建議使用

3. AES/CBC/PKCS5Padding 內(nèi)部的算法模式不同。

4.算法及密碼長度限制

算法/模式/填充 ? ? ? ? ? ? ? ?16字節(jié)加密后數(shù)據(jù)長度 ? ? ? ?不滿16字節(jié)加密后長度

AES/CBC/NoPadding ? ? ? ? ? ? 16 ? ? ? ? ? ? ? ? ? ? ? ? ?不支持

AES/CBC/PKCS5Padding ? ? ? ? ?32 ? ? ? ? ? ? ? ? ? ? ? ? ?16

AES/CBC/ISO10126Padding ? ? ? 32 ? ? ? ? ? ? ? ? ? ? ? ? ?16

AES/CFB/NoPadding ? ? ? ? ? ? 16 ? ? ? ? ? ? ? ? ? ? ? ? ?原始數(shù)據(jù)長度

AES/CFB/PKCS5Padding ? ? ? ? ?32 ? ? ? ? ? ? ? ? ? ? ? ? ?16

AES/CFB/ISO10126Padding ? ? ? 32 ? ? ? ? ? ? ? ? ? ? ? ? ?16

AES/ECB/NoPadding ? ? ? ? ? ? 16 ? ? ? ? ? ? ? ? ? ? ? ? ?不支持

AES/ECB/PKCS5Padding ? ? ? ? ?32 ? ? ? ? ? ? ? ? ? ? ? ? ?16

AES/ECB/ISO10126Padding ? ? ? 32 ? ? ? ? ? ? ? ? ? ? ? ? ?16

AES/OFB/NoPadding ? ? ? ? ? ? 16 ? ? ? ? ? ? ? ? ? ? ? ? ?原始數(shù)據(jù)長度

AES/OFB/PKCS5Padding ? ? ? ? ?32 ? ? ? ? ? ? ? ? ? ? ? ? ?16

AES/OFB/ISO10126Padding ? ? ? 32 ? ? ? ? ? ? ? ? ? ? ? ? ?16

AES/PCBC/NoPadding ? ? ? ? ? ?16 ? ? ? ? ? ? ? ? ? ? ? ? ?不支持

AES/PCBC/PKCS5Padding ? ? ? ? 32 ? ? ? ? ? ? ? ? ? ? ? ? ?16

AES/PCBC/ISO10126Padding ? ? ?32 ? ? ? ? ? ? ? ? ? ? ? ? ?16

AES API

1. Cipher 加密/解密引擎

2. 創(chuàng)建密碼生成器 KeyGenerator,設(shè)置密碼生成的密碼長度 128 bit和設(shè)備安全隨機(jī)數(shù) 狸演,

如keyGenerator.init(128, new SecureRandom(password.getBytes()));

3.生成 SecretKey keyGenerator.generateKey()

4. 初始化 引擎 cipher.init(Cipher.ENCRYPT_MODE, secretKey)

5. 加密處理 cipher.doFinal(byte[] origData)

非對稱加密算法

加密實(shí)現(xiàn)

1. M 明文 D 公鑰 E 密鑰 C 密文 n 公共模數(shù) 0x10001

2. C = M ^ E mod n

3. M = C ^ D mod n

4. 通常 E + n 作為 私鑰隱秘保存

5. 通常 D + n 作為公鑰言蛇,可以給任何人。

6. 通過 C ^ D mon => M

7. E 通過計(jì)算兩個(gè) 1024bit 以上的整數(shù)(并且是素?cái)?shù)),

公鑰 ?D = (素?cái)?shù)1 - 1) * (素?cái)?shù)2 - 1) E 包含兩個(gè)素?cái)?shù)

D 安全性足夠高

非對稱加密的API

1. Cipher 可以進(jìn)行加密宵距,用的是 “RSA”, “DSA”

2. KeyPairGenerator 生成 公鑰和私鑰

3. cipher init 加密用 私鑰腊尚, init 解密 用的是公鑰初始化。

加密實(shí)現(xiàn)

1. M 明文 D 公鑰 E 密鑰 C 密文 n 公共模數(shù) 0x10001

2. C = M ^ E mod n

3. M = C ^ D mod n

4. 通常 E + n 作為 私鑰隱秘保存

5. 通常 D + n 作為公鑰满哪,可以給任何人跟伏。

6. 通過 C ^ D mon => M

7. E 通過計(jì)算兩個(gè) 1024bit 以上的整數(shù)(并且是素?cái)?shù)),

公鑰 ?D = (素?cái)?shù)1 - 1) * (素?cái)?shù)2 - 1) E 包含兩個(gè)素?cái)?shù)

D 安全性足夠高

非對稱加密的API

1. Cipher 可以進(jìn)行加密,用的是 “RSA”, “DSA”

2. KeyPairGenerator 生成 公鑰和私鑰

3. cipher init 加密用 私鑰翩瓜, init 解密 用的是公鑰初始化。

Base64携龟、MD5編碼

android.util.Base64類

encode(byte[],flag)

encodeToString(byte[],flag) 編碼并轉(zhuǎn)換成字符串

decode(byte[],flag) 解碼

flags標(biāo)識

Base64.DEFAULT 默認(rèn)兔跌,如果字符串過長(超過76)時(shí)自動(dòng)在中間加一個(gè)換行符,字符串最后也會加一個(gè)換行符峡蟋》匚Γ可能會導(dǎo)致和其他模塊對接時(shí)結(jié)果不一致,建議使用Base64.NO_WRAP

Base64.NO_WRAP 不換行處理

Base64.NO_PADDING 結(jié)束位置省略“==”

it.sauronsoftware.base64.Base64類

第三方Base64編碼蕊蝗、解碼工具類

Base64.decode(byte[]);

Base64.encode(byte[])

MD5

java.security.MessageDigest

MD5加密:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仅乓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蓬戚,更是在濱河造成了極大的恐慌夸楣,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異豫喧,居然都是意外死亡石洗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進(jìn)店門紧显,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讲衫,“玉大人,你說我怎么就攤上這事孵班∩媸蓿” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵篙程,是天一觀的道長枷畏。 經(jīng)常有香客問我,道長房午,這世上最難降的妖魔是什么矿辽? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮郭厌,結(jié)果婚禮上袋倔,老公的妹妹穿的比我還像新娘。我一直安慰自己折柠,他們只是感情好宾娜,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扇售,像睡著了一般前塔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上承冰,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天华弓,我揣著相機(jī)與錄音,去河邊找鬼困乒。 笑死寂屏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的娜搂。 我是一名探鬼主播迁霎,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼百宇!你這毒婦竟也來了考廉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤携御,失蹤者是張志新(化名)和其女友劉穎昌粤,沒想到半個(gè)月后既绕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡婚苹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年岸更,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膊升。...
    茶點(diǎn)故事閱讀 40,861評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怎炊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出廓译,到底是詐尸還是另有隱情评肆,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布非区,位于F島的核電站瓜挽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏征绸。R本人自食惡果不足惜久橙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望管怠。 院中可真熱鬧淆衷,春花似錦、人聲如沸渤弛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽她肯。三九已至佳头,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晴氨,已是汗流浹背康嘉。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留籽前,地道東北人凄鼻。 一個(gè)月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像聚假,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子闰非,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 這篇文章主要講述在Mobile BI(移動(dòng)商務(wù)智能)開發(fā)過程中膘格,在網(wǎng)絡(luò)通信、數(shù)據(jù)存儲财松、登錄驗(yàn)證這幾個(gè)方面涉及的加密...
    雨_樹閱讀 2,479評論 0 6
  • 概述 之前一直對加密相關(guān)的算法知之甚少瘪贱,只知道類似DES纱控、RSA等加密算法能對數(shù)據(jù)傳輸進(jìn)行加密,且各種加密算法各有...
    Henryzhu閱讀 3,024評論 0 14
  • 本文主要介紹移動(dòng)端的加解密算法的分類菜秦、其優(yōu)缺點(diǎn)特性及應(yīng)用甜害,幫助讀者由淺入深地了解和選擇加解密算法。文中會包含算法的...
    蘋果粉閱讀 11,524評論 5 29
  • 《白鹿原》開篇就介紹了白嘉軒一生娶了7個(gè)女人球昨,很多人都覺得這個(gè)開頭是這部長篇小說中的最大的敗筆尔店,對全篇小說沒有什么...
    虎叔2018閱讀 641評論 8 7
  • 小時(shí)候聽《那一夜》,《光棍好苦》主慰。周杰倫的歌聽不來嚣州,大一點(diǎn)喜歡許嵩的《斷橋殘雪》,《清明雨上》共螺,現(xiàn)在聽著杰倫的每一...
    釋浪閱讀 196評論 0 0