2014-10-30 10 views
5

Ben bir Java şifreleme uygulama geliştiriyorum gizli Anahtarı yönetmek için. AES veya DES gibi simetrik algoritmalar kullanarak bir dosyayı şifrelemek ve dosyanın ileride şifresini çözmek için secretKey'i bir veritabanında saklamak istiyorum. SecretKey nesnesinin bir veritabanı tablosunda nasıl saklanacağını merak ediyorum. Anahtar nesneyi serileştirmeli miyim? (secretKey seri hale getirilebilir.) Veritabanında seri hale getirilmiş nesne nasıl saklanır? Hangi MYSQL veri tipini kullanmalıyım?nasıl java

Başka bir çözüm, [] anahtarın ham bayt elde veritabanında base64 ve saklamak için dönüştürülmesidir. Daha sonra base64 anahtarını orijinal Raw anahtarının kodunu çözebilirim ancak sorun ham anahtarın SecretKey nesnesine dönüştürülmesidir.

Herhangi bir yardım

derece mutluluk duyacağız. java bir sınıf yoktur

+1

DB saklamadan önce serileştirilmesi gerekir depolamak nesneleri ve nesne için 'blob' kullanmak gerekir. Daha fazla bilgi için buna bakın. http://stackoverflow.com/questions/2747203/want-to-store-object-in-mysql-database – Ali786

+0

gizli anahtarı saklamak için gizli anahtar –

+0

Kullanım Dize Nesne veri türü ne olacağını. – Ali786

cevap

3

- 'Key Generator' - Bu sınıf gizli (simetrik) tuşları jeneratörün işlevsellik sağlar.

Temelde şekilde aşağıdakilerden biri, gizli anahtar nesil için bu sınıfı kullanmak gerekir

: bu örnekte, bu parametre olarak geçirilir algoritması için varsayılan uzunluğu ile gizli anahtar oluşturulur olacak

SecretKey aesKey = KeyGenerator.getInstance("AES").generateKey(); 

o 128 bit için gizli anahtar oluşturur (AES için varsayılan).

Veya şu işlevi kullanın:

public static SecretKey generateSecretKey() 
{ 
    KeyGenerator keyGener = KeyGenerator.getInstance("AES"); 
    keyGener.init(256) // here you can pass any valid length 
    return keyGener.generateKey(); 
} 

Sen karakter dizisi, bayt dizi veya dizesine bu oluşturulan gizli anahtarları dönüştürmek ve daha sonra bu herhangi bir veritabanı ile saklanabilir, kullanımı şu:

char[] key = encodeHex(aesKey.getEncoded()); 

veya

byte[] key = aesKey.getEncoded(); 

fazla ayrıntı için KeyGenerator sınıfına bakın: http://docs.oracle.com/javase/7/docs/api/javax/crypto/KeyGenerator.html

Yardımlarınız için mutluyuz.

sayesinde Ankit

+0

Merhaba Lokesh, eğer cevabınız faydalı ise, o zaman yukarıya doğru oy kullanmak için ok kullanın, aksi takdirde probleminiz çözülmediyse, sorunu bana bildirin. – LearnAndHelp