2015-05-14 69 views
6

我期待了解用於在設備上存儲密碼的Android密鑰庫。 (https://developer.android.com/training/articles/keystore.html如何在Android上存儲密碼

在本文中,它說「使用Android Keystore提供程序讓單個應用程序存儲自己的憑據,只有應用程序本身可以訪問它。」這正是我想要的。

所以我覺得這會的工作方式是這樣的: 1)我會生成一個RSA密鑰

2)在密鑰庫

3存儲的專用密鑰)的一些SharePrefs存放公鑰

4)使用公鑰加密密碼

5)使用私鑰加密密碼。

不過我想我誤解的東西,因爲這篇文章沒有顯示

1)如何專用密鑰保存到密鑰庫(我沒有看到顯示密鑰庫如何添加關鍵任何API)

2)不顯示如何使用PrivateKey解密數據

嬰兒爲什麼本文討論「在KeyStore中使用PrivateKey以通過某些數據創建簽名」。對某些數據創建簽名意味着什麼? (我想用PrivateKey解密數據)。爲什麼它要驗證「之前由PrivateKey進行的簽名」。

所以我迷失在這一點......這篇文章開始了我在正確的地方,但最後我很困惑它試圖實現什麼。

有人可以建議,如果我試圖做什麼有意義嗎? 或者我應該將公鑰和私鑰保存在我自己的數據庫中? (在那裏沒有太多的安全性,但是如果要求在設備上存儲密碼,我可以做的最好)。

非常感謝

RGDS !!!!

回答

2

我從使用內部存儲的http://developer.android.com/training/articles/security-tips.html 默認情況下,您在內部存儲上創建文件只能訪問到你的應用程序部分引用這條線。這種保護由Android實施,對於大多數應用程序而言已足夠。

現在關於加密: Keystore API正在處理數據的加密。密鑰用於安全通信,不用於存儲密碼。密碼通常是不可逆的哈希或地圖。並且不需要解密,但只需要匹配。

例如:要通信如果你發送數據加密對方參與通信需要知道什麼數據是如此需要解密密鑰。所以如果你發送了「你好,我是密碼」接收者必須知道你發送了「你好我是密碼」的消息。

對於密碼,如果您輸入一些密碼或密鑰,它需要與存儲的對應物相匹配。就像「pass123」是你的密碼存儲爲「rdi#$$ +!@/b「,那麼當你輸入一個密碼的時候,通過檢查算法來處理它應該與存儲的值相匹配,並且你被認證了,它不需要生成」pass123「

因此,對於你的應用你可以使用一些機制它會生成幾乎唯一且不可逆的散列),以在輸入密碼時生成唯一的密鑰/散列,然後將其存儲在您的應用數據中。