---
name: "Crypt::Cipher::SAFER_SK128"
section: "3pm"
platform: "linux"
package: "perl-cryptx"
version: "0.091-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Crypt::Cipher::SAFER_SK128"
---

# Crypt::Cipher::SAFER\_SK128(3pm)

Symmetric cipher SAFER\_SK128, key size: 128 bits

## NAME

Crypt::Cipher::SAFER\_SK128 - Symmetric cipher SAFER\_SK128, 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('SAFER_SK128');
  my $ciphertext = $cbc->encrypt("secret data", $key, $iv);
  ### example 2 (slower)
  use Crypt::CBC;
  use Crypt::Cipher::SAFER_SK128;
  my $key = '...'; # length must be a valid key size for this cipher
  my $iv = '...';  # 16 bytes
  my $cbc = Crypt::CBC->new( -cipher=>'Cipher::SAFER_SK128', -key=>$key, -iv=>$iv );
  my $ciphertext = $cbc->encrypt("secret data");
```

## DESCRIPTION

This module implements the SAFER\_SK128 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::SAFER_SK128->new($key);
```

### new

```
 my $c = Crypt::Cipher::SAFER_SK128->new($key);
 #or
 my $c = Crypt::Cipher::SAFER_SK128->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::SAFER_SK128->keysize;
  #or
  Crypt::Cipher::SAFER_SK128::keysize;
```

### blocksize

Returns the cipher block size (in bytes).

```
  $c->blocksize;
  #or
  Crypt::Cipher::SAFER_SK128->blocksize;
  #or
  Crypt::Cipher::SAFER_SK128::blocksize;
```

### max\_keysize

Returns the maximum key size (in bytes).

```
  $c->max_keysize;
  #or
  Crypt::Cipher::SAFER_SK128->max_keysize;
  #or
  Crypt::Cipher::SAFER_SK128::max_keysize;
```

### min\_keysize

Returns the minimum key size (in bytes).

```
  $c->min_keysize;
  #or
  Crypt::Cipher::SAFER_SK128->min_keysize;
  #or
  Crypt::Cipher::SAFER_SK128::min_keysize;
```

### default\_rounds

Returns the cipher's default round count.

```
  $c->default_rounds;
  #or
  Crypt::Cipher::SAFER_SK128->default_rounds;
  #or
  Crypt::Cipher::SAFER_SK128::default_rounds;
```

## SEE ALSO

- •

  CryptX, Crypt::Cipher

- •

  \<https://en.wikipedia.org/wiki/SAFER\>
