2017-04-25 3 views
0

임의의 특수 문자로 소금을 치는 해독 된 키가 있습니다 (변경되었습니다) : J_a&[email protected]$0=f%4{4-f-1*1([email protected]&e|0)1&987*5([email protected]$1'1(4*0)1}c+f'[email protected]@8_6_c)[email protected]@c(3} 모든 특수 문자를 제거하고 그 무염한 버전을 반환해야합니다 (예 : 지금 내가 사용하고 있습니다 :해독 된 키에서 소금을 제거하는 더 안전한 방법

def remove_salt(decrypted_key): 
    """ Remove salt from a decrypted key """ 
    invalid_chars = set(string.punctuation) 
    return_key = [] 
    for c in decrypted_key: 
     if c not in invalid_chars: 
      return_key.append(c) 
    return ''.join(return_key) 

을 그래서 같을 것이다 :

>>> remove_salt("J_a&[email protected]$0=f%4{4-f-1*1([email protected]&e|0)1&987*5([email protected]$1'1(4*0)1}c+f'[email protected]@8_6_c)[email protected]@c(3}") 
'Ja30000f44f111d03e019875b12311401cf59d86c41c3' 
>>> 

거기 내가 완전히 소금이 무엇인지 공개하지 않고 키에서 소금을 제거 할 수있는 안전한 방법을, 내가 의미하는 바는 string.punctuation이다. 그 잘못된 문자 배우는 [email protected]#$ .. etc입니다. 소금이 무엇인지 완전히 밝히지 않고 어떻게이 소금을 제거 할 수 있습니까?

소금에 절인 방법은 제 선택이 아닙니다. 소금이 무엇인지 눈에 띄지 않으면 서이 물질을 무염 화시켜야합니다.

+0

'invalid_chars'를 매개 변수로 대신 사용할 수 있습니다. 이것이 여전히 당신이 겪은 것이 아니라면, 내가 읽었고 사용하는 잘못된 문자에 대한 외부 파일을 제안 할 것입니다. 'return ''.join (c가 invalid_chars가 아닌 경우 decrypted_key의 c는 c)' –

+6

소금은 비밀 정보가 아니므로 숨길 필요가 없습니다. 표준 암호화 라이브러리를 살펴 보시기 바랍니다. – msitt

+2

모호! = 보안. 이것은 염분이 어떻게 작용하는지가 아닙니다. – Dan

답변

1

소금 사용에 혼란 스럽습니다. 소금은 일반적으로 암호의 시작 또는 끝에 추가되며 그 결과는 암호화되어 저장됩니다. 소금 값 자체는 명확하게 저장되며 주로 사전 공격을 어렵게하기 위해 사용됩니다. 따라서 사용자가 암호를 입력하면 지정한 소금을 저장 한 위치에서 가져 와서 입력 한 내용에 추가하고 선택한 암호 해시로 해시 한 다음 저장된 해시가 제공된 암호와 일치하는지 확인합니다 해시시. 아마도 몇 가지 명확한 설명이 필요합니다 - 암호에 포함 된 소금을 제거하려고하는 이유는 무엇입니까?

+0

이것은 암호가 아니기 때문에 API 키입니다. 소금에 절인 방법은 제 선택 사항이 아니며, 단지 눈에 띄지 않으면 소금을 제거 할 수있는 방법을 찾아야합니다. – age97701