क्रिप्टोग्राफी में, पीकेसीएस # 7 पैडिंग एक पैडिंग योजना है जो कई बाइट्स एन, 1 को जोड़ती है, जहां प्रत्येक जोड़ा बाइट का मूल्य एन के बराबर है।
उदाहरण के लिए, Hello, World!
जिसमें 13 बाइट्स हैं, हेक्स में निम्नलिखित हैं:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21
यदि हम PKCS # 7 पैड की लंबाई 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
बाइट्स जोड़ते हैं , और दूसरे में हम सात 07
बाइट्स जोड़ते हैं ।
आपका कार्य मान्य करना होगा कि क्या एक स्ट्रिंग (या पूर्णांक सरणी) में PKCS # 7 पैडिंग सही है। यही है, यदि इनपुट स्ट्रिंग का अंतिम बाइट N है, तो आपके प्रोग्राम को यह जांचना चाहिए कि स्ट्रिंग के अंतिम N बाइट N के बराबर हैं।
इनपुट
कोड अंक 1 और 127 के बीच एक एकल नॉनमॉपी ASCII स्ट्रिंग जिसमें वर्ण शामिल हैं। यदि आप चाहें, तो आप इसके बजाय पूर्णांक के एक सरणी के रूप में इनपुट ले सकते हैं।
उत्पादन
एक सत्य मान यदि इनपुट स्ट्रिंग में PKCS # 7 पैडिंग मान्य है, तो एक मिथ्या मूल्य।
दोनों कार्य और पूर्ण कार्यक्रम स्वीकार्य हैं। यह कोड-गोल्फ है , इसलिए उद्देश्य आपके कोड में बाइट्स की संख्या को कम करना है।
परीक्षण के मामलों
इनपुट्स के पूर्णांक सरणी संस्करण को यहां प्रस्तुत किया गया है - स्ट्रिंग संस्करण में निम्नलिखित परीक्षण मामलों में से कई के लिए अनपेक्षित वर्ण होंगे:
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
)। आप इसके बारे में सोच सकते हैं, अलग करने के बाद, आप समाप्त करेंगे [1 2 3]
।
[1 2 3 3 3 3]
truthy या falsey? मुझे लगता है कि यह सच होना चाहिए लेकिन मैं सकारात्मक नहीं हूं।