2013-08-20 1 views
1

정수를 정수로 매핑하는 암호화 함수 (1 : 1 매핑)를 찾고 있습니다.정수 암호화

예를 들어 N1 (정수) 및 password이 있다고 가정 해 보겠습니다. 나는 암호화 함수를 사용하여 정수 N2을 얻는다. 그럼 내가 (그리고 오직) 내가 N1N2에서 돌아갈 수 있어야 암호를 알고있는 경우에만.

무엇이 가장 좋은 기능입니까?

+1

이러한 기능이 과다한 경우가 많고 귀하의 경우에 어떤 것이 "최고"라고 말하는게 어렵습니다. 그 중 하나를 판단하는 방법이 더 필요합니다. –

+0

귀하의 질문은 당신이 공개 키와 개인 키의 키 쌍이 아니라, 키만있는 교감 암호화 알고리즘을 찾고 있음을 의미합니다. 대칭 암호화의 키는 비밀로 유지되지만 그러한 의미에서 "개인"과 다소 비슷하지만 차이가 있습니다. 키 쌍의 개인 키는 두 당사자간에 공유되지 않습니다. 그것은 단일 당사자에게 비공개이며, 따라서 개인 키입니다. 따라서 적어도 두 당사자가 공유하는 대칭 암호화의 핵심은 개인 키가 아닙니다. –

+1

해시는 또한 다른 것을 암시합니다. 암호 해시는 일반적으로 한 가지 방법으로 만들어 지므로 역순으로 처리하거나 엄청난 노력을 기울여야합니다. 이 용어는 암호화 된 데이터에는 사용되지 않으며 올바른 키를 알고있는 경우 쉽게 해독 할 수 있습니다. –

답변

2

format preserving encryption을 (를) 한 번보세요. 찾고있는 것 같아요. 예를 들어, Feistel 네트워크와 AES를 사용하여 정수를 암호화하고 암호화 된 정수를 얻을 수 있습니다. 신용 카드 번호를 암호화 한 많은 예가 있습니다.

+0

대답은 좋지만, 내가 판단 할 수있는 한 신용 카드 번호의 암호화는 나쁜 생각입니다. 약간의 바이트를 절약하기 위해서, 당신은 IV 벡터를 버려야합니다. 이것은 제 의견으로는 필요합니다. – martinstoeckli

+0

이 형식은 암호화를 유지하므로 _encrypted_ 신용 카드가 있지만 같은 형식입니다. 추가 정보를 저장할 수없는 경우 때때로 더 잘할 수 없습니다. –

+0

위키 페이지에 댓글을 달았습니다. 문제는 신용 카드 번호가 너무 짧아서 한 번에 균열을 일으키기 위해 무지개 테이블을 쉽게 만들 수 있다는 것입니다. 주어진 숫자는 항상 동일한 암호화 된 숫자를 반환합니다. IV 벡터를 가진 블록 큐퍼조차도 짐승 같은 강제력을 가지기 쉽습니다. 그래서 번호를 저장하지 않는 것이 가장 좋습니다. 또는 적어도 IV 벡터로 번호를 저장하는 것이 가장 좋습니다. – martinstoeckli