1

最初にSHA-1ダイジェストアルゴリズムを使用して文字列にデジタル署名し、次にPrivateKeyを使用してRSAアルゴリズムを適用する必要があります。私はすでにPrivateKeyをbase64のデータ型char(250)としてデータベースに保存しています。私の問題は、サインインに使用するためにそれをPrivateKeyに変換する方法がわからないことです。

Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, privateKey);
byte[] cipherText = cipher.doFinal(digest);

ダイジェストは、SHA-1ダイジェストアルゴリズムを適用したバイトの配列でした。

MessageDigest md = MessageDigest.getInstance("SHA-1");
byte [] ba = cadena.getBytes();
byte [] digest  = md.digest(ba);

それが私が考えた解決策ですが、誰かがより良い解決策を持っているなら、私は感謝します。

4

1 に答える 1

4

秘密鍵をDBにどのように永続化したのかわかりません。ただし、このページKeyStoreには、ファイルシステムからをロードし、キーPrivateとキーを取得する方法に関する情報が記載されていPublicます。

関連するコードスニペット(要件に合わせて変更)は、

   String password = ...;
   KeyStore ks = KeyStore.getInstance(KEY_STORE_TYPE);

   byte[] keyAsByteArray = ...; // The key persisted in the DB
   InputStream keyStream = new ByteArrayInputStream(keyAsByteArray);
   ks.load(keyStream, password);

その後、

   KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(PRIVATE_KEY_ALIAS, password);  
   PrivateKey privateKey = pkEntry.getPrivateKey();
于 2011-12-08T23:54:08.523 に答える