VB.NET 내에서 SecureString 변수를 사용하여 SHA1 또는 SHA512 해시로 변환하고 싶습니다. SecureString을 HashAlgorithm.ComputeHash가 허용하는 Byte 배열로 안전하게 변환하려면 어떻게해야합니까?SecureString을 사용하여 SHA1 또는 SHA512 해시를 만드는 방법은 무엇입니까?
2
A
답변
-2
C#으로 입력하고 VB로 변환했습니다. 잘하면 그것은 여전히 작동합니다!
Dim input As [Char]() = "Super Secret String".ToCharArray()
Dim secret As New SecureString()
For idx As Integer = 0 To input.Length - 1
secret.AppendChar(input(idx))
Next
SecurePassword.MakeReadOnly()
Dim pBStr As IntPtr = Marshal.SecureStringToBSTR(secret)
Dim output As String = Marshal.PtrToStringBSTR(pBStr)
Marshal.FreeBSTR(pBStr)
Dim sha As SHA512 = New SHA512Managed()
Dim result As Byte() = sha.ComputeHash(Encoding.UTF8.GetBytes(output))
편집는 :
그것은 자신에 의해 지적 된 것처럼 및 코멘트에 몇 가지 다른, 나는 여기에 관심이를 가지고 싶어. 이렇게하는 것은 좋은 생각이 아닙니다. 더 이상 안전하지 않은 장소로 바이트를 이동하고 있습니다. 물론 할 수는 있지만 실제로는 안된다.
0
사용 된 String 인스턴스 (출력) 만 피하고 문자 배열로 바꾼다면 어떨까요? 이렇게하면 사용 후이 어레이를 닦아 낼 수 있습니다.
public static String SecureStringToMD5(SecureString password)
{
int passwordLength = password.Length;
char[] passwordChars = new char[passwordLength];
// Copy the password from SecureString to our char array
IntPtr passwortPointer = Marshal.SecureStringToBSTR(password);
Marshal.Copy(passwortPointer, passwordChars, 0, passwordLength);
Marshal.ZeroFreeBSTR(passwortPointer);
// Hash the char array
MD5 md5Hasher = MD5.Create();
byte[] hashedPasswordBytes = md5Hasher.ComputeHash(Encoding.Default.GetBytes(passwordChars));
// Wipe the character array from memory
for (int i = 0; i < passwordChars.Length; i++)
{
passwordChars[i] = '\0';
}
// Your implementation of representing the hash in a readable manner
String hashString = ConvertToHexString(hashedPasswordBytes);
// Return the result
return hashString;
}
내가 빠진 것이 있습니까?
+1
예 -이 질문에 대한 답변 : http://stackoverflow.com/questions/14293344/hashing-a-securestring-in-net – RobSiklos
관련 문제
- 1. iReport에서 SHA1 또는 MD5 해시를 계산하십시오.
- 2. SHA1 해시를 사용하여 NSString 암호화
- 3. 파일에서 SHA1 해시를 수행하는 방법은 무엇입니까?
- 4. NSString에서 SHA1 해시를 사용하여 NSData를 캡처하는 방법은 무엇입니까?
- 5. 이미지의 sha1 해시를 계산하는 방법
- 6. 개체 트리에서 SHA1 다이제스트를 만드는 방법은 무엇입니까?
- 7. 해시를 "줄이는"방법은 무엇입니까?
- 8. HMAC-SHA1 예가 원하는 해시를 반환하지 않습니까?
- 9. python을 사용하여 sha1 해시를 사용하여 디렉토리의 파일 이름을 바꾸는 방법은 무엇입니까?
- 10. Ruby에서 영구 해시를 만드는 방법은 무엇입니까?
- 11. Perl을 사용하여 kstat -p의 출력으로 해시를 만드는 방법은 무엇입니까?
- 12. Ruby에서 HMAC 모듈을 사용하여 MD5 해시를 만드는 방법은 무엇입니까?
- 13. 펄을 사용하여 Windows 명령 줄에서 파일의 SHA1 해시를 얻으려면 어떻게해야합니까?
- 14. 가역 해시를 만드는 좋은 방법이나 기능은 무엇입니까?
- 15. GAE/J에 OAuth HMAC-SHA1 서명을 만드는 방법은 무엇입니까?
- 16. sha1 해시를 생성 할 때 machineKey validationKey는 어떻게 사용됩니까?
- 17. 40 문자 SHA1 해시를 20 문자 SHA1 해시로 변환 할 수 있습니까?
- 18. 크기가 같은 두 개의 배열에서 Ruby 해시를 만드는 방법은 무엇입니까?
- 19. T-SQL을 사용하여 'nvarchar'문자열의 SHA1 해시 계산
- 20. URL 해시를 만드는 방법 및 사례
- 21. 서브에 해시를 전달하는 방법은 무엇입니까?
- 22. Ruby에서 해시를 반복하는 방법은 무엇입니까?
- 23. options_for_select 해시를 정렬하는 방법은 무엇입니까?
- 24. 참조 또는 해시를 반환해야합니까?
- 25. SHA1 해시를 워드 프레스 계정의 로그인에 비교하는 것
- 26. Active Directory 암호 해시를 SHA1 값으로 설정 하시겠습니까?
- 27. 읽기 전용으로 SecureString을 초기화하는 방법
- 28. 다운로드 가능한 실행 파일과 함께 MD5 또는 SHA1 해시를 제공하면 어떤 점이 있습니까?
- 29. 웹 응용 프로그램 용 SHA1 또는 MD5
- 30. 해시를 새 것으로 병합하는 방법은 무엇입니까?
왜 변환하셨습니까? C#에 있나요? – backslash17
Luke가 VB.net에서 요청했기 때문에 변환했습니다. C#에서이 변환기를 사용해야한다면 http://www.developerfusion.com/tools/convert/vb-to-csharp/ – Joe
Joe! 감사합니다! – Luke