Dalam kriptografi, padding PKCS # 7 adalah skema padding yang menambahkan sejumlah byte N ≥ 1, di mana nilai setiap byte yang ditambahkan sama dengan N.
Misalnya,, Hello, World!
yang memiliki 13 byte, adalah yang berikut dalam hex:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21
Jika kita memilih pad PKCS # 7 dengan panjang 16, maka hasilnya adalah:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 03 03 03
Dan jika kita memilih untuk mengisi panjang 20, maka hasilnya adalah:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 07 07 07 07 07 07 07
Perhatikan bahwa pada contoh pertama kita menambahkan tiga 03
byte, dan yang kedua kita tambahkan tujuh 07
byte.
Tugas Anda adalah memvalidasi apakah string (atau array integer) memiliki padding PKCS # 7 yang benar. Artinya, jika byte terakhir dari string input adalah N, maka program Anda harus memeriksa bahwa N byte terakhir dari string sama dengan N.
Memasukkan
String ASCII nonempty tunggal yang mengandung karakter antara titik kode 1 dan 127 inklusif. Jika mau, Anda dapat mengambil input sebagai array bilangan bulat.
Keluaran
Sebuah truthy nilai jika input string memiliki PKCS valid # 7 padding, jika nilai falsy.
Fungsi dan program lengkap dapat diterima. Ini adalah kode-golf , jadi tujuannya adalah untuk meminimalkan jumlah byte dalam kode Anda.
Uji kasus
Versi input integer array disajikan di sini - versi string akan memiliki karakter yang tidak dapat dicetak untuk banyak kasus uji berikut:
Benar:
[1]
[1, 1]
[2, 1]
[2, 2]
[5, 6, 5, 3, 3, 3]
[1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2]
[95, 115, 80, 32, 71, 7, 122, 49, 13, 7, 7, 7, 7, 7, 7, 7, 7]
[27, 33, 54, 65, 97, 33, 52, 55, 60, 1, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
[15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15]
Falsy:
[2]
[1, 2]
[5, 5, 5, 5]
[5, 6, 5, 4, 4, 4]
[3, 3, 3, 94, 3, 3]
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 127]
[50, 39, 94, 105, 49, 29, 74, 102, 2, 106, 44, 7, 7, 7, 7, 7, 7]
[26, 27, 59, 25, 122, 110, 20, 30, 114, 6, 9, 62, 121, 42, 22, 60, 33, 12]
7
s). Anda dapat menganggapnya sebagai, setelah stripping, Anda akan berakhir dengan [1 2 3]
.
[1 2 3 3 3 3]
atau salah? Saya pikir itu harus benar tetapi saya tidak positif.