24-payDocs

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

On this page