암호화에서 PKCS # 7 패딩 은 N ≥ 1의 바이트 수를 더하는 패딩 방식이며, 추가 된 각 바이트의 값은 N과 같습니다.
예를 들어, Hello, World!
13 바이트를 갖는는 16 진수로 다음과 같습니다.
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21
PKCS # 7 pad를 길이 16으로 선택하면 결과는 다음과 같습니다.
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
첫 번째 예 03
에서는 3 바이트를 추가하고 두 번째 예 에서는 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]
진실 인가 거짓 인가 ? 나는 그것이 진실해야 한다고 생각 하지만 나는 긍정적이지 않습니다.