暗号化では、PKCS#7パディングは、N≥1のバイト数を追加するパディング方式で、追加される各バイトの値はNに等しくなります。
たとえば、Hello, World!
13バイトの16進数は次のとおりです。
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21
長さ16にPKCS#7パッドを選択すると、結果は次のようになります。
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 03 03 03
そして、長さ20までパディングすることを選択した場合、結果は次のようになります。
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 07 07 07 07 07 07 07
最初の例では3 03
バイトを追加し、2番目の例では7 07
バイトを追加します。
あなたの仕事は、文字列(または整数配列)に正しいPKCS#7パディングがあるかどうかを検証することです。つまり、入力文字列の最後のバイトがNである場合、プログラムは文字列の最後のNバイトがNに等しいことを確認する必要があります。
入力
コードポイント1〜127の間の文字を含む単一の空でないASCII文字列。必要に応じて、代わりに整数の配列として入力を受け取ることができます。
出力
truthyの値は、入力文字列が有効なPKCS#7パディング、そうでない場合falsy値を持っている場合。
機能と完全なプログラムの両方が許容されます。これはcode-golfであるため、目的はコードのバイト数を最小限にすることです。
テストケース
入力の整数配列バージョンがここに表示されます—文字列バージョンには、次のテストケースの多くで印刷できない文字が含まれます。
真実:
[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]
偽物:
[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で終わる真実のテストケースに相当します)。あなたは、それを剥ぎ取った後、あなたがで終わると考えることができます[1 2 3]
。
[1 2 3 3 3 3]
truthyまたはfalseyは?私はそれが真実であるべきだと思うが、私は前向きではない。