문제 요약:
.NET 프로젝트를 다음으로 업데이트하는 경우 버전 6에서는 암호화된 문자열을 해독하면 출력이 부분적으로 잘리는 것으로 확인되었습니다. 원래 입력과 비교합니다. 특히, 해독된 문자열의 일부가 잘려서 길이 차이가 일관됩니다.
원인:
이 문제는 영향을 미치는 .NET 6의 주요 변경으로 인해 발생합니다. CryptoStream과 같은 스트림. 이전에는 이러한 스트림이 제공된 모든 버퍼 공간이 채워지거나 스트림 끝에 도달할 때까지 읽기 작업을 완료하지 않는 고유한 동작을 했습니다.
.NET 6을 사용하면 이러한 스트림이 이제 다른 스트림과 더욱 일관되게 동작합니다. 길이 N의 버퍼를 사용하여 읽기 작업을 수행하는 경우 다음 중 하나가 완료됩니다.
코드 영향:
제공된 암호화/암호 해독 코드에서 사용 중인 CryptoStream이 이 변경 사항을 제대로 설명하지 않습니다. 특히 코드는 암호 해독 프로세스 중에 모든 바이트를 읽고 반환했는지 확인하지 못합니다.
해결책:
문제를 해결하려면 코드를 수정해야 합니다. 해독 중에 사용 가능한 모든 바이트를 읽도록 보장합니다. 이는 다음 접근 방식 중 하나를 사용하여 달성할 수 있습니다.
using (var plainTextStream = new MemoryStream()) { cryptoStream.CopyTo(plainTextStream); var plainTextBytes = plainTextStream.ToArray(); return Encoding.UTF8.GetString(plainTextBytes, 0, plainTextBytes.Length); }
using (var plainTextReader = new StreamReader(cryptoStream)) { return plainTextReader.ReadToEnd(); }
이러한 수정 사항을 구현하면 코드가 다음을 보장합니다. 해독된 모든 바이트가 캡처되어 출력 문자열의 일부로 올바르게 반환됩니다.
위 내용은 .NET 6으로 업그레이드한 후 해독된 문자열이 잘리는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!