AES256CBCdecrypt and AES256CBCencrypt (String functions): Difference between revisions

From m204wiki
Jump to navigation Jump to search
m (→‎See also: add templates)
m (→‎See also: use template)
 
Line 75: Line 75:
</ul></li>
</ul></li>


<li><var>String</var> one-way ciphers:  
<li><var>String</var> hashes:  
<ul>
<ul>
<li><var>[[MD5digest (String function)|MD5digest]]</var> </li>
{{Template:Digest methods}}
 
<li><var>[[SHAdigest (String function)|SHAdigest]]</var> </li>
 
<li><var>[[SHA224digest (String function)|SHA224digest]]</var> </li>
 
<li><var>[[SHA256digest (String function)|SHA256digest]]</var> </li>
</ul></li>
</ul></li>
</ul>
</ul>


{{Template:String:AES256CBCdecrypt and AES256CBCencrypt footer}}
{{Template:String:AES256CBCdecrypt and AES256CBCencrypt footer}}

Latest revision as of 17:01, 20 May 2016

AES256CBC encryption or decryption (String class)

[Introduced in Model 204 7.6]


AES256CBCdecrypt and AES256CBCencrypt are synonyms for the String class function that applies the DEA (Data Encryption Algorithm) using a 256-bit symmetric key to decrypt or encrypt each 128-bit block of input text. CBC (Cipher Block Chaining) refers to a randomizing tactic whereby the result of applying the AES cipher to a 128-bit block is combined with the next block before the next block's encryption; and so on for each subsequent block. An initialization vector is used in the first block to make its encryption unique.

For more details about how the algorithm works, see Data Encryption Standard and Block Chaining (CBC) Cipher Block Chaining (CBC).

The length of the returned string is the same as that of the object string.

AES is a two-way cipher, so encrypting a string with a key and then decrypting the result of that encryption with the same key produces the original string. That is, the following assertion should always hold:

assert %string:aes256cbcencrypt(%key):aes256cbcdecrypt(%key) eq %string

You can use AES256CBCdecrypt to "document" that you are decrypting, and use AES256CBCencrypt to "document" that you are encrypting. You can use AES256CBCdecrypt and AES256CBCencrypt interchangeably on the rest of this page.

Syntax

%outString = string:AES256CBCdecrypt( key, initVector) Throws UnsupportedCrypto, InvalidCryptoKey, InvalidCryptoData, InvalidCryptoInitVector

%outString = string:AES256CBCencrypt( key, initVector) Throws UnsupportedCrypto, InvalidCryptoKey, InvalidCryptoData, InvalidCryptoInitVector

Syntax terms

%outString A string variable to receive the encrypted or decrypted method object string. Its length is the same as string.
string The string to which the method is applied. string must be a multiple of sixteen bytes in length; its maximum is 32768 bytes. It may be null.
key A 32-byte (only) string variable whose value is used to encrypt or decrypt the method object, string.
initVector A 16-byte string that is used to randomize the encryption. The initialization vector is used to ensure distinct ciphertexts are produced even when the same plaintext is encrypted multiple times independently with the same key.

Usage notes

  • You are not prevented from creating confusion by encrypting with AES256CBCdecrypt and decrypting with AES256CBCencrypt.
  • The AES256CBCdecrypt and AES256CBCencrypt functions are available as of Model 204 7.6.

Examples

In the following example, the output string from the AES256CBCencrypt method is converted to hex using the StringToHex function to reveal its non-displayable characters, then decrypted to return the original input string:

b %ls is longstring %string is longstring %key is string len 32 %iv is string len 16 %string = 'onetwothreefour0onetwothreefour0' %key = '12345678161616162424242432323232' %iv = 'abcdefgh16161616' %ls = %string:aes256cbcencrypt(%key, %iv) printText {~} is {%ls:stringTohex} printText {~} is: {%ls:aes256cbcdecrypt(%key, %iv)} end

The result is:

%ls:stringTohex is: BD9E29B6AE9F796AECEDFC69ACBF0030AB4CFED68139EB6518262C648D133DF3 %ls:aes256cbcdecrypt(%key, %iv) is: onetwothreefour0onetwothreefour0

See also