例如
KeyGenerator keygen = KeyGenerator.getInstance("DES");//參數代表使用的加解密演算法 SecretKey key = keygen.generateKey(); //產生key在產生完Key後,利用Cipher來對資料加密。
String str ="example"; byte[] src = str.getBytes(); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.ENCRYPT_MODE, key);//決定是何種模式有 ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODE, UNWRAP_MODE byte [] result = cipher.doFinal(src);//依據設定的Mode來開始動作,result即為加密後之密文如果要解密的話,則改用DECRYPT_MODE
cipher.init(Cipher.ENCRYPT_MODE, key); byte [] src = cipher.doFinal(result);//取回明文,在轉換回對應之type即可 String str = new String(src);因為對稱加密,加解密都是用同一把Key所以會需要保存Key,最簡單的方法就是使用檔案來存放,例如
//存成檔案 byte [] bytekey = key.getEncoded(); int len = bytekey.length; FileOutputStream fos; fos = new FileOutputStream(FILEPATH) fos.write(bytekey); fos.close(); //讀檔 byte [] buf = new byte[len] FileInputStream fis = new FileInputStream(FILEPATH); int i = fis.read(buf); fis.close(); SecretKey resultKey = new SecretKeySpec(buf, "DES");//從byte array轉回key當然也可用ObjectInputStream、ObjectOutputStream拉,如此一來就可以少去byte轉換的動作。
沒有留言:
張貼留言