>

파이썬에서이 golang 함수와 동등한 기능이 필요합니다 :

func RsaDecrypt(ciphertext []byte) ([]byte, error) {
    block, _ := pem.Decode(privateKey)
    if block == nil {
        return nil, errors.New("private key error!")
    }
    priv, err := x509.ParsePKCS1PrivateKey(block.Bytes)
    if err != nil {
        return nil, err
    }
    return rsa.DecryptPKCS1v15(rand.Reader, priv, ciphertext)
}

저는 파이썬 개발자이며 이것이 어떻게 작동하는지 이해하지 못합니다. 이 기능을 만들었지 만 같지 않습니다 :

import rsa
with open("rsa.key") as f:
    priv_key_pkcs1 = f.read()
priv_key = rsa.PrivateKey.load_pkcs1(priv_key_pkcs1)
line = '''
Lyzkh2pqrisgM_p32O6FmA8oDvzaimvrU9zyd0vyW6HBM2BznuHLbAYUMGp5oYgEHCxmZTWDs67Jt5AGulfn-LrcewCQi89wrb00ZvP69YdjwBe-7aoXBG4_zNMZ7ecLgd8WzUqBGGtVvUhCTVSBBi85mNMSCcgYHt__PFefRHZE09nHnEX25w6iR0ZZlQxuESBkuqTcs8qjUhs2Guin1xBMSWRINj4JDdCjIVHV4hdSjrINgFU-VF1sYFRibWcboYlXifROOxCF50MGtIBkcf7dnqsrR8HEXgZLnCyikhhlQAFoh2hsj4lPWNpWum-dBWj-B0b8P-hRmermDzcPqA==
'''
encrypted = line.decode('base64')
decrypted = rsa.decrypt(encrypted, priv_key)
print decrypted

파이썬에서 golang 함수를 변환하도록 도와 줄 수있는 사람이 있습니까? 아니면 실제 파이썬 코드에서 잘못된 위치에 대한 정보를 알려주시겠습니까?


  • 답변 # 1

    암호 텍스트를 해독하기 위해 잘못된 base64 디코더를 사용하고 있습니다. 암호문에있는 "-"및 "_"문자에서 base- 안전하고 URL이 안전한 base64를 사용하여 인코딩 된 것이 분명합니다. 이를 해독하려면 base64 모듈을 사용해야합니다 (예 :

    import base64
    line = '''
    Lyzkh2pqrisgM_p32O6FmA8oDvzaimvrU9zyd0vyW6HBM2BznuHLbAYUMGp5oYgEHCxmZTWDs67Jt5AGulfn-LrcewCQi89wrb00ZvP69YdjwBe-7aoXBG4_zNMZ7ecLgd8WzUqBGGtVvUhCTVSBBi85mNMSCcgYHt__PFefRHZE09nHnEX25w6iR0ZZlQxuESBkuqTcs8qjUhs2Guin1xBMSWRINj4JDdCjIVHV4hdSjrINgFU-VF1sYFRibWcboYlXifROOxCF50MGtIBkcf7dnqsrR8HEXgZLnCyikhhlQAFoh2hsj4lPWNpWum-dBWj-B0b8P-hRmermDzcPqA==
    '''
    encrypted = base64.urlsafe_b64decode(line)
    print len(encrypted)
    print encrypted.encode('hex')
    
    

관련 자료

  • 이전 putty - 이름 영웅 호스팅의 SSH 로그인 문제
  • 다음 rubygems - Rails에서 더 이상 사용되지 않는 exception_notification gem의 대안?