PHP의 RSA_SIGN 또는 DSA_SIGN!
문제
내 웹 사이트에서 라이센스 키 생성기를 구현하려고하지만 PHP에 대한 지식은 거의 없습니다! 내 (Cocoa) 응용 프로그램에서 rsa_sign 함수 (C#)를 사용하는 시스템 확인을 통합합니다 ... PayPal IPN 알림 시스템을 사용하여 자동으로 라이센스 키를 생성하고 보내고 싶습니다 ... RSA 키를 사용하여 PHP에서 문자열에 서명하는 방법을 정말로 모릅니다 !!! PHP에서 나는 OpenSS_Sign 함수 만 알고 있지만 동일하지는 않습니다! 또는 DSA 서명 방법을 사용하는 것이 더 좋고 쉽습니까 ???
도와주세요!
모든 답장에 미리 감사드립니다 !!!
해결책
당신은 원합니다 OpenSSL_Sign ().
편집하다:
- 메시지 다이제스트가 확인하는 데 사용하려는 메시지인지 확인하십시오.
- Base64 출력을 다른 서명과 비교하여 테스트하지 말고 C# 코드의 서명을 확인하여 테스트하십시오. 동일한 데이터의 동일한 키를 가진 두 개의 유효한 서명이 다른 이진 표현을 갖는 것이 가능하다고 생각합니다.
다른 팁
고맙습니다! 당신이 옳습니다!
문제를 발견했습니다. OpenSSL_SIGN과 함께 사용하는 해시 문자열입니다! 이 코드는 Objective-C입니다.
NSString *stringToEncript = @"test";
const char *clearText = [stringToEncript UTF8String];
unsigned char md[SHA_DIGEST_LENGTH];
SHA1((unsigned char *)clearText, strlen(clearText), md);
for(int i=0; i<SHA_DIGEST_LENGTH; i++)
printf("%x", md[i]);
그리고 PHP에서 나는 다음을 썼습니다.
$stringToEncrypt = "test";
$hash = sha1(utf8_encode($stringToEncrypt));
echo $hash;
첫 번째 코드의 출력은 다음과 같습니다.
A94A8FE5CCB19BA61C4C873D391E987982FBBD3
두 번째 코드의 출력은 다음과 같습니다.
A94A8FE5CCB19BA61C4C0873D391E987982FBBD3
보시다시피 '0'이 놓쳤습니다! 내가 뭐가 잘못 됐어?
제휴하지 않습니다 StackOverflow