2017-12-24 41 views
1

나는 sha-1을 내 질문에 대한 예제로 삼을 것이다. 내가 아는 한, sha1은 입력으로 숫자를 취하고 출력으로 다른 숫자를 생성하는 함수입니다.charset을 알지 못하고 일반 함수가 문자에 대해 어떻게 작동합니까?

문자 ü의 sha1 값을 찾습니다. 이것은 ASCII 세트의 문자가 아닙니다. Here에 대한 자세한 정보입니다. http://www.sha1-online.com/은이 문자의 sha1 값이 94a759fd37735430753c7b6b80684306d80ea16e임을 나에게 알립니다.

문자 üC3 BC 및 UTF-16 00FC으로 표시됩니다. 그래서 우리는 실제로 우리가 텍스트에 사용하는 문자 인코딩없이 sha1에 대해 이야기 할 수 있습니까? http://www.sha1-online.com/ 예를 들어 어떤 가치가 있습니까? 문자 인코딩이 큰 차이를 만들지 않겠습니까?

그리고 Java에서 알 수있는 한 모든 문자는 UTF-16으로 표시됩니다. Java에서 sha-1을 계산할 때 위의 예에서 함수가 입력으로 작동합니까 00FC?

그리고 모든 문자가 UTF-8로 표현되는 또 다른 프로그래밍 언어를 사용할 수 있습니다. sha1 결과는 Java와 완전히 다를 것입니까?

+1

해시 기능은 일반적으로 문자가 아닌 * 바이트 *에서 작동합니다. –

+0

@OliverCharlesworth 글쎄, 내 질문은 여전히 ​​유효합니다. 바이트는 16 진수가 아닌 2 진수로 표현되는 숫자입니다. –

+0

내가 말하는 것은 해쉬 함수가 당신이 사용하고있는 캐릭터 셋을 모르거나 신경 쓰지 않는다는 것이다. –

답변

1

다른 캐릭터 세트 인코더로 실험 해보고 차이점을 확인하십시오. Mac에서

import javax.xml.bind.DatatypeConverter; 
import java.nio.charset.Charset; 
import java.security.MessageDigest; 
import java.util.Map; 

public class Main { 
    public static void main(String[] args) throws Exception { 
     String s = "ü"; 
     MessageDigest sha1 = MessageDigest.getInstance("SHA1"); 
     for (Map.Entry<String, Charset> entry : Charset.availableCharsets().entrySet()) { 
      try { 
       byte[] encoded = s.getBytes(entry.getValue()); 
       byte[] digest = sha1.digest(encoded); 
       System.out.printf("For encoding %s, SHA1 hash is %s%n", 
         entry.getKey(), DatatypeConverter.printHexBinary(digest)); 
      } catch (UnsupportedOperationException e) { 
       System.out.printf("Cant make it work for %s%n", entry.getKey()); 
      } 
     } 
    } 

} 

출력은 :

다른 답변 언급했듯이
For encoding Big5, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding Big5-HKSCS, SHA1 hash is BB4DF74228C74A9F5B1CFADC9A711AFC3ACAC72E 
For encoding CESU-8, SHA1 hash is 94A759FD37735430753C7B6B80684306D80EA16E 
For encoding EUC-JP, SHA1 hash is 351B74F9485AEACE9E1F18FA834C01BBD95AEFFE 
For encoding EUC-KR, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding GB18030, SHA1 hash is 8423E79957EB24D34D202D200DC8172062B09BC9 
For encoding GB2312, SHA1 hash is 8423E79957EB24D34D202D200DC8172062B09BC9 
For encoding GBK, SHA1 hash is 8423E79957EB24D34D202D200DC8172062B09BC9 
For encoding IBM-Thai, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding IBM00858, SHA1 hash is A3F294235FE5422005AE9BC3A0D1BFFE12CFE353 
For encoding IBM01140, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding IBM01141, SHA1 hash is 655F2B71DDFAFBCBD5AF517F02EB9386A2A7A2A1 
For encoding IBM01142, SHA1 hash is EB6B0E7165A8118B4BD2DE93FBE8182DC50FE8DE 
For encoding IBM01143, SHA1 hash is EB6B0E7165A8118B4BD2DE93FBE8182DC50FE8DE 
For encoding IBM01144, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding IBM01145, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding IBM01146, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding IBM01147, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding IBM01148, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding IBM01149, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding IBM037, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding IBM1026, SHA1 hash is C2204EDBFB1B72C9E996A5E6464F6AB0198C494F 
For encoding IBM1047, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding IBM273, SHA1 hash is 655F2B71DDFAFBCBD5AF517F02EB9386A2A7A2A1 
For encoding IBM277, SHA1 hash is EB6B0E7165A8118B4BD2DE93FBE8182DC50FE8DE 
For encoding IBM278, SHA1 hash is EB6B0E7165A8118B4BD2DE93FBE8182DC50FE8DE 
For encoding IBM280, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding IBM284, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding IBM285, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding IBM290, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding IBM297, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding IBM420, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding IBM424, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding IBM437, SHA1 hash is A3F294235FE5422005AE9BC3A0D1BFFE12CFE353 
For encoding IBM500, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding IBM775, SHA1 hash is A3F294235FE5422005AE9BC3A0D1BFFE12CFE353 
For encoding IBM850, SHA1 hash is A3F294235FE5422005AE9BC3A0D1BFFE12CFE353 
For encoding IBM852, SHA1 hash is A3F294235FE5422005AE9BC3A0D1BFFE12CFE353 
For encoding IBM855, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding IBM857, SHA1 hash is A3F294235FE5422005AE9BC3A0D1BFFE12CFE353 
For encoding IBM860, SHA1 hash is A3F294235FE5422005AE9BC3A0D1BFFE12CFE353 
For encoding IBM861, SHA1 hash is A3F294235FE5422005AE9BC3A0D1BFFE12CFE353 
For encoding IBM862, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding IBM863, SHA1 hash is A3F294235FE5422005AE9BC3A0D1BFFE12CFE353 
For encoding IBM864, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding IBM865, SHA1 hash is A3F294235FE5422005AE9BC3A0D1BFFE12CFE353 
For encoding IBM866, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding IBM868, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding IBM869, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding IBM870, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding IBM871, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding IBM918, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
Cant make it work for ISO-2022-CN 
For encoding ISO-2022-JP, SHA1 hash is EEFF680379A9FC2E2328A673C1C9A9488027DDE6 
For encoding ISO-2022-JP-2, SHA1 hash is 7F2ABFCFEE137EAF0E691FF15303B2E49FA2F10F 
For encoding ISO-2022-KR, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding ISO-8859-1, SHA1 hash is AB461F6B8A6842A473257A2561C1FBDF91BDFE77 
For encoding ISO-8859-13, SHA1 hash is AB461F6B8A6842A473257A2561C1FBDF91BDFE77 
For encoding ISO-8859-15, SHA1 hash is AB461F6B8A6842A473257A2561C1FBDF91BDFE77 
For encoding ISO-8859-2, SHA1 hash is AB461F6B8A6842A473257A2561C1FBDF91BDFE77 
For encoding ISO-8859-3, SHA1 hash is AB461F6B8A6842A473257A2561C1FBDF91BDFE77 
For encoding ISO-8859-4, SHA1 hash is AB461F6B8A6842A473257A2561C1FBDF91BDFE77 
For encoding ISO-8859-5, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding ISO-8859-6, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding ISO-8859-7, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding ISO-8859-8, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding ISO-8859-9, SHA1 hash is AB461F6B8A6842A473257A2561C1FBDF91BDFE77 
For encoding JIS_X0201, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding JIS_X0212-1990, SHA1 hash is 1636827A2EED870EE75B8646595EA7FA833B7B2D 
For encoding KOI8-R, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding KOI8-U, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding Shift_JIS, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding TIS-620, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding US-ASCII, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding UTF-16, SHA1 hash is 884B39989F49BC0C3B4095E564B97F788E8F26A4 
For encoding UTF-16BE, SHA1 hash is 4BB28530F49234022C33A9A53020019FF1729128 
For encoding UTF-16LE, SHA1 hash is A497384499A29B7E56BEC88F64915F8697B9F212 
For encoding UTF-32, SHA1 hash is 2D15E32FE6E8B72CC758BF92826781A21F543F06 
For encoding UTF-32BE, SHA1 hash is 2D15E32FE6E8B72CC758BF92826781A21F543F06 
For encoding UTF-32LE, SHA1 hash is 42670183E5B0D4ED60120ABB18E4B19458B8786D 
For encoding UTF-8, SHA1 hash is 94A759FD37735430753C7B6B80684306D80EA16E 
For encoding windows-1250, SHA1 hash is AB461F6B8A6842A473257A2561C1FBDF91BDFE77 
For encoding windows-1251, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding windows-1252, SHA1 hash is AB461F6B8A6842A473257A2561C1FBDF91BDFE77 
For encoding windows-1253, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding windows-1254, SHA1 hash is AB461F6B8A6842A473257A2561C1FBDF91BDFE77 
For encoding windows-1255, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding windows-1256, SHA1 hash is AB461F6B8A6842A473257A2561C1FBDF91BDFE77 
For encoding windows-1257, SHA1 hash is AB461F6B8A6842A473257A2561C1FBDF91BDFE77 
For encoding windows-1258, SHA1 hash is AB461F6B8A6842A473257A2561C1FBDF91BDFE77 
For encoding windows-31j, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-Big5-HKSCS-2001, SHA1 hash is BB4DF74228C74A9F5B1CFADC9A711AFC3ACAC72E 
For encoding x-Big5-Solaris, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-COMPOUND_TEXT, SHA1 hash is AB461F6B8A6842A473257A2561C1FBDF91BDFE77 
For encoding x-euc-jp-linux, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-EUC-TW, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-eucJP-Open, SHA1 hash is 351B74F9485AEACE9E1F18FA834C01BBD95AEFFE 
For encoding x-IBM1006, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM1025, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM1046, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM1097, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM1098, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM1112, SHA1 hash is 5FB9A0BA37519B7FD51909C778EE3B48502DE7C1 
For encoding x-IBM1122, SHA1 hash is EB6B0E7165A8118B4BD2DE93FBE8182DC50FE8DE 
For encoding x-IBM1123, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM1124, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM1166, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM1364, SHA1 hash is 7A81AF3E591AC713F81EA1EFE93DCF36157D8376 
For encoding x-IBM1381, SHA1 hash is 8423E79957EB24D34D202D200DC8172062B09BC9 
For encoding x-IBM1383, SHA1 hash is 8423E79957EB24D34D202D200DC8172062B09BC9 
For encoding x-IBM300, SHA1 hash is 0AD631FE7C0AFBB8E46DFF643ECB6F157F0F17C2 
For encoding x-IBM33722, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM737, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM833, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM834, SHA1 hash is BF465657E801DC6DEC070496C4CD3BE6C9463310 
For encoding x-IBM856, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM874, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM875, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM921, SHA1 hash is AB461F6B8A6842A473257A2561C1FBDF91BDFE77 
For encoding x-IBM922, SHA1 hash is AB461F6B8A6842A473257A2561C1FBDF91BDFE77 
For encoding x-IBM930, SHA1 hash is 7A81AF3E591AC713F81EA1EFE93DCF36157D8376 
For encoding x-IBM933, SHA1 hash is 7A81AF3E591AC713F81EA1EFE93DCF36157D8376 
For encoding x-IBM935, SHA1 hash is CC6D81CF2D2718EEBE6B8AAC261DF04090159565 
For encoding x-IBM937, SHA1 hash is 7A81AF3E591AC713F81EA1EFE93DCF36157D8376 
For encoding x-IBM939, SHA1 hash is 7A81AF3E591AC713F81EA1EFE93DCF36157D8376 
For encoding x-IBM942, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM942C, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM943, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM943C, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM948, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM949, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM949C, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM950, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM964, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-IBM970, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-ISCII91, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-ISO-2022-CN-CNS, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-ISO-2022-CN-GB, SHA1 hash is 187F00566A714B33F37B77D53ECA6E20CD74DDE0 
For encoding x-iso-8859-11, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-JIS0208, SHA1 hash is 3A2C82466E34A4A1677205899068A2D53A92BD54 
Cant make it work for x-JISAutoDetect 
For encoding x-Johab, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-MacArabic, SHA1 hash is F195C020A28DFC5F2FB6AF256B524DDCD93756ED 
For encoding x-MacCentralEurope, SHA1 hash is F195C020A28DFC5F2FB6AF256B524DDCD93756ED 
For encoding x-MacCroatian, SHA1 hash is F195C020A28DFC5F2FB6AF256B524DDCD93756ED 
For encoding x-MacCyrillic, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-MacDingbat, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-MacGreek, SHA1 hash is F195C020A28DFC5F2FB6AF256B524DDCD93756ED 
For encoding x-MacHebrew, SHA1 hash is F195C020A28DFC5F2FB6AF256B524DDCD93756ED 
For encoding x-MacIceland, SHA1 hash is F195C020A28DFC5F2FB6AF256B524DDCD93756ED 
For encoding x-MacRoman, SHA1 hash is F195C020A28DFC5F2FB6AF256B524DDCD93756ED 
For encoding x-MacRomania, SHA1 hash is F195C020A28DFC5F2FB6AF256B524DDCD93756ED 
For encoding x-MacSymbol, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-MacThai, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-MacTurkish, SHA1 hash is F195C020A28DFC5F2FB6AF256B524DDCD93756ED 
For encoding x-MacUkraine, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-MS932_0213, SHA1 hash is 9B4A2DBFED88AFE0BD16BD7CAD69F90BE5A09FAF 
For encoding x-MS950-HKSCS, SHA1 hash is BB4DF74228C74A9F5B1CFADC9A711AFC3ACAC72E 
For encoding x-MS950-HKSCS-XP, SHA1 hash is BB4DF74228C74A9F5B1CFADC9A711AFC3ACAC72E 
For encoding x-mswin-936, SHA1 hash is 8423E79957EB24D34D202D200DC8172062B09BC9 
For encoding x-PCK, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-SJIS_0213, SHA1 hash is 9B4A2DBFED88AFE0BD16BD7CAD69F90BE5A09FAF 
For encoding x-UTF-16LE-BOM, SHA1 hash is 61FB9BF626098B2786735AA4505430890DCC6BC8 
For encoding X-UTF-32BE-BOM, SHA1 hash is 0662CE1CEA946124D3FA5F43B4BA2DA41CEF500C 
For encoding X-UTF-32LE-BOM, SHA1 hash is A6030F4A113F71489180D342DDB5106CE9FC33E5 
For encoding x-windows-50220, SHA1 hash is 7F2ABFCFEE137EAF0E691FF15303B2E49FA2F10F 
For encoding x-windows-50221, SHA1 hash is 7F2ABFCFEE137EAF0E691FF15303B2E49FA2F10F 
For encoding x-windows-874, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-windows-949, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-windows-950, SHA1 hash is 5BAB61EB53176449E25C2C82F172B82CB13FFB9D 
For encoding x-windows-iso2022jp, SHA1 hash is EEFF680379A9FC2E2328A673C1C9A9488027DDE6 
1

해시 함수는 바이트 배열을 입력으로 사용합니다. 문자 또는 문자열을 바이트 배열로 변환하고 변환시 명시 적 또는 묵시적으로 charset을 지정합니다. 바이트 값은 문자 숫자 값과 반드시 ​​같을 필요는 없으며 문자 세트에 따라 다릅니다. 일반적으로 일반 함수는 charset을 알아야하지만이 정보는 암시 적으로 제공 될 수 있습니다.

1

는 SHA-1 체크섬 바이트로부터 계산된다. 그러나 Java 또는 http://www.sha1-online.com과 같은 유틸리티를 사용하면 텍스트를 나타내는 데 다른 문자 집합이 사용되므로 문자 코딩이 작동합니다. 위에서 언급 한 유틸리티는 값을 계산하는 데 사용할 문자 집합을 지정하지 않기 때문에 문제를 혼동합니다.

일반적으로 shasum (UNIX) 또는 certutil (Windows)과 같은 기본 제공 시스템 유틸리티를 사용하여 파일에서 SHA-1을 계산하면 파일의 바이트 만 읽습니다. 텍스트 편집기를 사용하여 파일을 저장하면 인코딩을 선택할 수 있습니다. NotePad는 옵션으로 ANSI와 UTF-8을 모두 가지고 있습니다. 한 파일에 텍스트를 ANSI로 저장하고 다른 파일에 UTF-8로 같은 텍스트를 저장하는 경우 문자를 나타내는 데 사용 된 바이트가 다르기 때문에 다른 SHA-1 체크섬을 생성합니다.

0

그리고 Java에서 알 수있는 한 모든 문자는 UTF-16으로 표시됩니다. Java의 문자열은 UTF-16 코드 단위를 나타내는 16 비트 숫자의 시퀀스입니다.

해시 함수는 바이트 시퀀스에서 작동합니다. 문자열은 이 아니고 바이트 시퀀스입니다. 따라서 문자열을 해시 함수에 전달하려면 먼저 문자열 시퀀스로 변환해야합니다. 일부 언어는 16 비트 숫자의 시퀀스를 암시 적으로 바이트 순서로 재 해석 할 수 있지만 Java는 그다지 현혹되지 않습니다.

Java에서 sha-1을 계산할 때 위의 예제에서 함수가 입력 00FC에서 작동합니까?

링크 된 Java 예제 코드를 사용하는 경우 거의 확실하지 않습니다.

연결 한 java 예제에서는 String.getBytes()를 사용하여이 변환을 수행합니다. getBytes()는 단어 시퀀스를 바이트 시퀀스로 재 해석하지 않습니다. 대신 UTF-16 코드 단위 시퀀스를 "플랫폼의 기본 문자 집합"에 따라 바이트 시퀀스로 변환합니다.

"플랫폼의 기본 문자 집합"은 플랫폼에 따라 다르며 언어 설정에 따라 다르지만 UTF-16이 아닌 바이트 기반 ASCII 기반 문자 집합입니다.