Kriptografide, PKCS # 7 dolgusu , eklenen her bir baytın değerinin N'ye eşit olduğu sayıda byte N ≥ 1 ekleyen bir dolgu şemasıdır.
Örneğin Hello, World!
, 13 bayt olan, hex cinsinden şöyledir:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21
PKCS # 7 yastığının uzunluğu 16'yı seçersek, sonuç şöyledir:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 03 03 03
Ve eğer uzunluğu 20'ye kadar kaydırmayı seçersek, sonuç şöyledir:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 07 07 07 07 07 07 07
İlk örnekte üç 03
bayt eklediğimizi , ikincisinde yedi 07
bayt eklediğimizi unutmayın .
Göreviniz bir dizginin (veya tamsayı dizisinin) PKCS # 7 dolgusuna sahip olup olmadığını doğrulamak olacaktır . Diğer bir deyişle, giriş dizesinin son baytı N ise, programınız dizenin son N baytının N'ye eşit olduğunu kontrol etmelidir.
Giriş
1 ile 127 arasındaki kod noktaları arasında karakter içeren tek bir boş ASCII dizgisi. İsterseniz girdi yerine bir tamsayı dizisi olarak girebilirsiniz.
Çıktı
Bir truthy değeri girdi dizesi geçerli PKCS # 7 doldurma, aksi bir falsy değeri varsa.
Hem fonksiyonlar hem de tam programlar kabul edilebilir. Bu kod-golf , bu nedenle amaç kodunuzdaki bayt sayısını en aza indirmektir.
Test durumları
Girdilerin tamsayı dizi sürümü burada sunulmuştur; dize sürümünde aşağıdaki test durumlarının çoğu için yazdırılamayan karakterler bulunur:
Truthy:
[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 ile biten truthy test durumuyla paralellik gösterir ). Bunu sıyırdıktan sonra sona erecekmiş gibi düşünebilirsin [1 2 3]
.
[1 2 3 3 3 3]
Truthy mi falsey mi? Ben düşünüyorum o truthy olmalı ama pozitif değilim.