Predloha tvorby podpisu
Príklady zdrojového kódu
PHP
public function computeSIGN($mid, $key, $message){
$hash = hash("sha1", $message, true);
$iv = $mid . strrev($mid);
$key = pack('H*', $key);
$crypted = openssl_encrypt( $hash, 'AES-256-CBC', $key, 1, $iv );
$sign = strtoupper(bin2hex(substr($crypted, 0, 16)));
return $sign;
}Java
public String generateSign(String message, String key, String iv) {
try {
Security.addProvider(new BouncyCastleProvider());
byte[] keyBytes = Hex.decodeHex(key.toCharArray());
byte[] ivBytes = iv.getBytes();
SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "AES");
IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
Cipher encryptCipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
encryptCipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivSpec);
byte[] sha1Hash = DigestUtils.sha1(message);
byte[] encryptedData = encryptCipher.doFinal(sha1Hash);
return Hex.encodeHexString(encryptedData).substring(0,32);
} catch (Exception e) {
logger.error("ERROR!", e);
return null;
}
}.NET framework 3.5 (C#)
public static string AesEncrypt( string message, byte[] Key, byte[] IV, PaddingMode paddingMode , CipherMode cipherMode)
{
byte[] hash = GetSha1(message);
AesManaged aes= new AesManaged();
aes.Key = Key;
aes.IV = IV;
aes.Mode = cipherMode;
aes.Padding = paddingMode;
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
byte[] encrypted = null;
using (MemoryStream ms = new MemoryStream()) {
using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
cs.Write(hash, 0, hash.Length);
}
encrypted = ms.ToArray();
}
return ConvertByteArrayToHexString(encrypted);
}.NET framework 3.5 (VB)
Public Shared Function AesEncrypt(message As String, Key As Byte(), IV As Byte(), paddingMode As PaddingMode, cipherMode As CipherMode) As String
Dim hash As Byte() = GetSha1(message)
Dim aes As New AesManaged()
aes.Key = Key
aes.IV = IV
aes.Mode = cipherMode
aes.Padding = paddingMode
Dim encryptor As ICryptoTransform = aes.CreateEncryptor(aes.Key, aes.IV)
Dim encrypted As Byte() = Nothing
Using ms As New MemoryStream()
Using cs = New CryptoStream(ms, encryptor, CryptoStreamMode.Write)
cs.Write(hash, 0, hash.Length)
End Using
encrypted = ms.ToArray()
End Using
Return ConvertByteArrayToHexString(encrypted)
End Function