"암호화" 실패를 휴대용으로 확인하는 방법은 무엇입니까?

"암호화" 실패를 휴대용으로 확인하는 방법은 무엇입니까?

불행히도 일부 시스템은 crypt다음에서 통합되고 있습니다.libxcrypt함수가 실패하면 널 포인터를 반환하는 대신 로 시작하는 "실패 플래그" 문자열을 반환 합니다 *.*0

해당 특정 문자열이 보장되는지 여부는 불분명합니다. 우리가 볼 때libxcrypt코드에서는 이 기능을 컴파일 타임에 끌 수 있는 것으로 보입니다. 이 경우 API 함수는 *하위 수준 루틴의 선행 문자만 확인하고 이를 null로 반환합니다. 이는 애플리케이션 코드가 동일한 작업을 수행해야 하며 *특정 토큰을 가정하지 않아야 함을 의미합니다.

내 질문은 crypt다른 구현이 어떤 상황에서도 선도가 결코 반환되지 않을 것이라고 보장하는 것입니다 *(실패한 경우를 제외하고 모방함으로써).libxcrypt? )

이렇게 하면:

if (ret != NULL && ret[0] != '*') {
  /* we have a valid result */
} else {
  /* crypt failed */
}

멋지나요? 아니면 crypt우리가 사용하고 있는지 구별해야합니까?libxcrypt하나, 이 경우에만 확인하시겠습니까?

errno(한 가지 생각: 0 으로 설정 하고 *로 변경하면 선행이 실패했다고 결론을 내릴 수도 있습니다.)errnoEINVAL

관련 정보