मैं एक समय के पासवर्ड का उपयोग करने की कोशिश कर रहा हूं जो Google प्रमाणक एप्लिकेशन का उपयोग करके उत्पन्न किया जा सकता है ।
Google प्रमाणक क्या करता है
मूल रूप से, Google प्रमाणक दो प्रकार के पासवर्ड लागू करता है:
- HOTP - HMAC आधारित एक बार पासवर्ड, जो पासवर्ड का मतलब करने के लिए अनुपालन में प्रत्येक कॉल के साथ बदल गया है, RFC4226 , और
- TOTP - समय-आधारित वन-टाइम पासवर्ड, जो हर 30-सेकंड की अवधि के लिए बदलता है (जहाँ तक मुझे पता है)।
Google प्रमाणक यहां ओपन सोर्स के रूप में भी उपलब्ध है: code.google.com/p/google-authenticator
वर्तमान कोड
मैं HOTP और TOTP पासवर्ड जनरेट करने के लिए मौजूदा समाधानों की तलाश में था, लेकिन बहुत कुछ नहीं मिला। कोड मेरे पास निम्न स्निपेट है जो HOTP उत्पन्न करने के लिए जिम्मेदार है:
import hmac, base64, struct, hashlib, time
def get_token(secret, digest_mode=hashlib.sha1, intervals_no=None):
if intervals_no == None:
intervals_no = int(time.time()) // 30
key = base64.b32decode(secret)
msg = struct.pack(">Q", intervals_no)
h = hmac.new(key, msg, digest_mode).digest()
o = ord(h[19]) & 15
h = (struct.unpack(">I", h[o:o+4])[0] & 0x7fffffff) % 1000000
return h
मैं जिस समस्या का सामना कर रहा हूं वह यह है कि उपरोक्त कोड का उपयोग करके मैंने जो पासवर्ड उत्पन्न किया है, वह एंड्रॉइड के लिए Google प्रमाणक ऐप का उपयोग करके उत्पन्न नहीं है। भले ही मैंने जीए ऐप के भीतर प्रदान की गई कुंजी के बराबर होने के साथ कई intervals_no
मूल्यों (बिल्कुल पहले 10000, शुरुआत के साथ intervals_no = 0
) की कोशिश की secret
।
प्रश्न मेरे पास हैं
मेरे प्रश्न हैं:
- मैं क्या गलत कर रहा हूं?
- मैं पायथन में HOTP और / या TOTP कैसे उत्पन्न कर सकता हूं?
- क्या इसके लिए कोई मौजूदा पायथन लाइब्रेरी हैं?
योग करने के लिए: कृपया मुझे कोई भी सुराग दें जो मेरे पायथन कोड के भीतर Google प्रमाणक प्रमाणीकरण को लागू करने में मेरी मदद करेगा।