Crypt::Cipher::SM4(3) User Contributed Perl Documentation NAME Crypt::Cipher::SM4 - Symmetric cipher SM4, key size: 128 bits SYNOPSIS ### example 1 use Crypt::Mode::CBC; my $key = '...'; # length must be a valid key size for this cipher my $iv = '...'; # 16 bytes my $cbc = Crypt::Mode::CBC->new('SM4'); my $ciphertext = $cbc->encrypt("secret data", $key, $iv); ### example 2 (slower) use Crypt::CBC; use Crypt::Cipher::SM4; my $key = '...'; # length must be a valid key size for this cipher my $iv = '...'; # 16 bytes my $cbc = Crypt::CBC->new( -cipher=>'Cipher::SM4', -key=>$key, -iv=>$iv ); my $ciphertext = $cbc->encrypt("secret data"); DESCRIPTION This module implements the SM4 cipher. Its interface is compatible with Crypt::CBC. Note: This module only implements single-block encryption and decryption. For general data, use a block mode such as Crypt::Mode::CBC, Crypt::Mode::CTR, or Crypt::CBC (which is slower). METHODS Unless noted otherwise, assume $c is an existing cipher object created via "new", for example: my $c = Crypt::Cipher::SM4->new($key); new my $c = Crypt::Cipher::SM4->new($key); #or my $c = Crypt::Cipher::SM4->new($key, $rounds); # $key .... [binary string] key of an accepted length (see keysize, min_keysize, max_keysize) # $rounds . [integer] optional, number of rounds (if supported by the cipher; croaks on invalid value) encrypt Encrypts exactly one block of plaintext. The length of $plaintext must equal "blocksize"; croaks otherwise. An empty string is accepted and returned unchanged. my $ciphertext = $c->encrypt($plaintext); Returns the encrypted block as a binary string (raw bytes). decrypt Decrypts exactly one block of ciphertext. The length of $ciphertext must equal "blocksize"; croaks otherwise. An empty string is accepted and returned unchanged. my $plaintext = $c->decrypt($ciphertext); Returns the decrypted block as a binary string (raw bytes). keysize Just an alias for "max_keysize". $c->keysize; #or Crypt::Cipher::SM4->keysize; #or Crypt::Cipher::SM4::keysize; blocksize Returns the cipher block size (in bytes). $c->blocksize; #or Crypt::Cipher::SM4->blocksize; #or Crypt::Cipher::SM4::blocksize; max_keysize Returns the maximum key size (in bytes). $c->max_keysize; #or Crypt::Cipher::SM4->max_keysize; #or Crypt::Cipher::SM4::max_keysize; min_keysize Returns the minimum key size (in bytes). $c->min_keysize; #or Crypt::Cipher::SM4->min_keysize; #or Crypt::Cipher::SM4::min_keysize; default_rounds Returns the cipher's default round count. $c->default_rounds; #or Crypt::Cipher::SM4->default_rounds; #or Crypt::Cipher::SM4::default_rounds; SEE ALSO o CryptX, Crypt::Cipher o perl v5.42.2 2026-05-12 Crypt::Cipher::SM4(3)