編碼解碼,加密解密,摘要
1、 base64
用法
base64.encode(content.getbytes(), base64.default)
base64.decode(content.getbytes(), base64.default)
原理 通過ascii 表和base64 的表不斷的 比對和切換
1 把得到的byte 按六位 切出來
2 把切出來的結果 傳化成十進位制
3 然後去base64 裡面去查表
4 得到的結果 從左到右拼接成字串
2、urlencoder 和urldecoder
用處:在客戶端和服務端 傳遞中文字元和特殊字元的時候,為了防止亂碼的情況 就要使用 urlencoder 和urldecoder
用法:urlencoder.encode(); urldecoder.decode()
原理:和base64 同理,也是不斷查表,不斷切分
3、aes 加密解密
用處:用於把檔案和字串加密和解密 他需要設定密碼 並且密碼的長度 必須是16、24 、32 個字元
用法
//初始化密文
cipher cipher = cipher.getinstance("aes");
// 初始化密碼
secretkeyspec key = new secretkeyspec(password.getbytes(),"aes");
// 確定是加密還是解密
cipher.init(cipher.encrypt_mode,key);
// 加密
byte encodebytes = cipher.dofinal(encodestring.getbytes());
//加密出來的結果必須經過base64處理一下,然後才不會出現亂碼的情況 ,才能正常的解密回去
byte encode = base64.encode(encodebytes, base64.default);
string encoderesult = new string(encode);
mtextviewresult.settext(encoderesult);
解密的過程 和加密的過程是相反的
需要注意到是,我們的結果是經過了base64處理後的結果,所以在解密之前得通過base64 解碼回來
注意: aes 的密碼的長度要求是16 、24 、32 位 ,如果是其他的情況,那麼就不能進行加密和解密
4、 des 加密
//初始化密文
cipher cipher = cipher.getinstance("des");
// 初始化密碼 注意 密碼的長度必須要求是8位 這個是和aes 的區別
secretkeyspec key = new secretkeyspec(password.getbytes(),"des");
// 設定加密或者是解密的模式
cipher.init(cipher.encrypt_mode,key);
//開始加密
byte encodebytes = cipher.dofinal(content.getbytes());
// 為了防止出現加密出來byte陣列出現亂碼的情況,我們把得到byte陣列 通過base64處理
byte encode = base64.encode(encodebytes, base64.default);
mtextviewresult.settext(new string(encode));
解密
cipher cipher = cipher.getinstance("des");
secretkeyspec keys = new secretkeyspec(passwords.getbytes(),"des");
cipher.init(cipher.decrypt_mode,keys);
// 因為我們加密的結果通過了base64編碼過,所以,當我們拿到加密後的結果的時候,我們應該把結果通過base64解密回來
// 然後在進行解密
byte resultbytes = cipher.dofinal(decodebytes);
mtextviewresult.settext(new string(resultbytes));
5、rsa 加密
1. 在加密或者解密之前必要要有 公鑰或者私鑰 (這個公鑰和私鑰不是輸入的,而是直接生成的)
//初始化密文
cipher cipher = cipher.getinstance("rsa");
設定加密或者是解密的模式
cipher.init(cipher.encrypt_mode,publickey);
//開始加密
byte encodebytes = cipher.dofinal(content.getbytes());
// 為了防止出現加密出來byte陣列出現亂碼的情況,我們把得到byte陣列 通過base64處理
byte encode = base64.encode(encodebytes, base64.default);
mtextviewresult.settext(new string(encode));
2. 在解密的時候 ,一般的情況 ,不會讓你自己生成乙個私鑰或者公鑰來進行加密解密,因為我們操作的客戶端,
一般情況下,都是服務端直接給我們乙個字串,讓我們自己去生成乙個 與伺服器相對應的私鑰或者公鑰
2.1 我們要通過字串生成乙個公鑰或者私鑰
// 通過獲取的字串(私鑰的字串)來生成 乙個私鑰
byte keybytes = base64.decode(privatekeystr.getbytes(), base64.default);
// 通過字元陣列 來生成 公鑰或者私鑰
pkcs8encodedkeyspec spec = new pkcs8encodedkeyspec(keybytes);
keyfactory factory = keyfactory.getinstance("rsa");
生成了私鑰
privatekey privatekey = factory.generateprivate(spec);
2.2 解密
// 先解碼再解碼
byte decode = base64.decode(encoderesult.getbytes(), base64.default);
cipher cipher = cipher.getinstance("rsa");
cipher.init(cipher.decrypt_mode,privatekey);
byte dofinal = cipher.dofinal(decode);
CA加密介紹
因為cw是隨加擾資訊一起通過公用網傳輸,任何人都可以讀取研究它,一旦cw被讀取破解,那麼整個系統就癱瘓了,所以對cw本身就要用乙個加密金鑰通過加密演算法來對它進行加密保護。在具體應用中,這個金鑰可以按照網路運營商要求經常加以改變,通常由服務商提供,用來控制其提供的服務,所以把它稱為業務金鑰 serv...
最簡單的加密
最簡單的加密 package com.util 類 介面的目的 作用 功能 繼承於何種父類,實現的介面 實現的演算法 使用方法 示例程式.version v1.0 2012 3 22 author xiahui public class encrypt system.out.print 加密 s n...
常見的加密系統介紹
加密系統在企業中有三個基本的部署方向,分別是儲存 傳輸和認證。因為網際網路並非可信傳輸渠道,有可能存在監聽 攔截和惡意修改等多種威脅,因此傳輸方向為企業對加密系統需求最大的方向。隨著企業內部對本地資料安全的日益重視,儲存方面尤其是移動裝置的儲存加密市場也越來越熱,大有後來居上的勢頭。儲存方面 加密系...