setting up encryption
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
package com.example.hpostesting.encryption
|
||||
|
||||
import android.util.Base64
|
||||
import javax.crypto.Cipher
|
||||
import javax.crypto.SecretKeyFactory
|
||||
import javax.crypto.spec.IvParameterSpec
|
||||
import javax.crypto.spec.PBEKeySpec
|
||||
import javax.crypto.spec.SecretKeySpec
|
||||
|
||||
object Encryption {
|
||||
private const val AES_MODE = "AES/CBC/PKCS5Padding"
|
||||
private const val KEY_SPEC_ALGORITHM = "PBKDF2WithHmacSHA1"
|
||||
private const val SALT = "Bigtec"
|
||||
private const val ITERATION_COUNT = 10000
|
||||
private const val KEY_LENGTH = 256
|
||||
private val FIXED_IV = byteArrayOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
|
||||
|
||||
fun encrypt(textToEncrypt: String, password: String): String {
|
||||
val salt = SALT.toByteArray()
|
||||
val factory = SecretKeyFactory.getInstance(KEY_SPEC_ALGORITHM)
|
||||
val spec = PBEKeySpec(password.toCharArray(), salt, ITERATION_COUNT, KEY_LENGTH)
|
||||
val tmp = factory.generateSecret(spec)
|
||||
val key = SecretKeySpec(tmp.encoded, "AES")
|
||||
val cipher = Cipher.getInstance(AES_MODE)
|
||||
cipher.init(Cipher.ENCRYPT_MODE, key, IvParameterSpec(FIXED_IV))
|
||||
val encryptedBytes = cipher.doFinal(textToEncrypt.toByteArray(Charsets.UTF_8))
|
||||
return Base64.encodeToString(encryptedBytes, Base64.NO_WRAP)
|
||||
}
|
||||
|
||||
fun decrypt(encryptedText: String, password: String): String {
|
||||
val salt = SALT.toByteArray()
|
||||
val encryptedBytes = Base64.decode(encryptedText, Base64.NO_WRAP)
|
||||
val factory = SecretKeyFactory.getInstance(KEY_SPEC_ALGORITHM)
|
||||
val spec = PBEKeySpec(password.toCharArray(), salt, ITERATION_COUNT, KEY_LENGTH)
|
||||
val tmp = factory.generateSecret(spec)
|
||||
val key = SecretKeySpec(tmp.encoded, "AES")
|
||||
val cipher = Cipher.getInstance(AES_MODE)
|
||||
cipher.init(Cipher.DECRYPT_MODE, key, IvParameterSpec(FIXED_IV))
|
||||
val decryptedBytes = cipher.doFinal(encryptedBytes)
|
||||
return String(decryptedBytes, Charsets.UTF_8)
|
||||
}
|
||||
}
|
||||
@@ -221,4 +221,9 @@ class DeviceProvisionFragment : Fragment() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun encryptAndSaveToFile(){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user