密鑰庫系統並不是讓程序直接進行存儲程序的私密信息的,比如說用戶賬號密碼,其提供了壹個密鑰安全容器,保護密鑰材料免遭未經授權的使用,壹個應用程序可以在密鑰庫中存儲多個密鑰並且只允許應用自身訪問,應用程序可以在密鑰庫系統中生成,存儲,獲取存儲其中的公鑰或者私鑰,因此可使用密鑰庫系統中的密鑰來進行數據的加密。
密鑰庫系統由 KeyChain API 以及在 Android 4.3(API 級別 18)中引入的 Android 密鑰庫提供程序功能使用。
安卓系統提供了下面幾種KeyStore類型:
各種類型的詳細說明可以參考: /openjdk-redirect.html?v=8&path=/technotes/guides/security/StandardNames.html#KeyStore
先創建壹個Activity,自定義布局從頁面上來實現幾種功能
效果圖:
說明:
1.輸入框輸入要增加的密鑰的名稱,點擊添加按鈕進行添加壹個新密鑰;
2.輸入框輸入要刪除的密鑰的名稱,點擊刪除按鈕進行刪除壹個已存在的密鑰;
3.這裏指定了數據明文,點擊密鑰列表中的item可選中指定的密鑰,用於使用密鑰進行加密和解密,選中密鑰後,可點擊加密按鈕進行加密,加密後可點擊解密按鈕進行解密;
4.密鑰列表顯示當前應用在密鑰庫系統中生成了的密鑰,長按可刪除密鑰;
MainActivity
密鑰庫系統工具類
生成密鑰時使用X500Principal指定了自簽署證書,參數分別代表
CN:通用名稱
O:組織
OU:組織單元
C:國家
並且指定密鑰的有效時間,並且指定了用於生成密鑰對的自簽名證書的序列號。
這裏指定了通過密鑰庫系統生成RSA密鑰。
先從密鑰庫中取出密鑰,使用公鑰進行加密
先從密鑰庫中取出密鑰,使用私鑰進行解密
使用密鑰對數據簽名,簽名算法須與秘鑰算法保持壹致。
使用密鑰對數據進行簽名認證,簽名算法須與秘鑰算法保持壹致。
密鑰庫支持的算法可參考: /training/articles/keystore
demo鏈接: /samlss/KeyStore