I have one example using SHA256 using Java Libraries, so we have the Secret and Salt to encrypt and decrypt
from javax.crypto import Cipher
from javax.crypto import SecretKey
from javax.crypto import SecretKeyFactory
from javax.crypto.spec import IvParameterSpec
from javax.crypto.spec import PBEKeySpec
from javax.crypto.spec import SecretKeySpec
from java.nio.charset import StandardCharsets
from java.security.spec import KeySpec
from java.util import Base64import java.lang.Exception
logger = system.util.getLogger('encryptionLogger')#SECRET_KEY = 'one_key_to_rule_them_all'
#SALT = 'salt_of_the_earth'def encrypt(strToEncrypt, SECRET_KEY, SALT):
encryptedText = ''
try:
iv = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
ivspec = IvParameterSpec(iv)factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256") spec = PBEKeySpec(list(SECRET_KEY), SALT.encode("UTF-8"), 65536, 256) tmp = factory.generateSecret(spec) secretKey = SecretKeySpec(tmp.getEncoded(), "AES") cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivspec); cipherText = cipher.doFinal(strToEncrypt.encode("UTF-8")) encoder = Base64.getEncoder() encryptedText = encoder.encodeToString(cipherText) except Exception, e: logger.warnf("Encrypt Exception: %s",e) return encryptedText
def decrypt(encryptedText, SECRET_KEY, SALT):
decryptedText = ''try: iv = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ivspec = IvParameterSpec(iv) factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256") spec = PBEKeySpec(list(SECRET_KEY), SALT.encode("UTF-8"), 65536, 256) tmp = factory.generateSecret(spec) secretKey = SecretKeySpec(tmp.getEncoded(), "AES") cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE,secretKey,ivspec) decoder = Base64.getDecoder() cipherText = decoder.decode(encryptedText.encode('UTF-8')) decryptedText = ''.join(map(chr,cipher.doFinal(cipherText))) except Exception, e: logger.warnf('Decrypt Exception: %s',e) return decryptedText
Thanks for the posts:
AES Encryption using Scripting - Ignition - Inductive Automation Forum
AES 256 Encryption Using Scripting? - Ignition - Inductive Automation Forum