2014-04-14 2 views
0

문자열의 해시 합계를 파일에 추가해야합니다. 해시 합계는 SHA-256 (Base-64)입니다.Openssl-SHA256 (Base-64) 명령 줄을 사용하여

문자열 스트림은 다음과 같다 : 내가 함께 해시 총을

Transaction Type|External System Reference Number|Original External System Reference|Account title|SAP Company Number|Payment Currency|Payment Amount|Trade/Posting Date|Settlement Date|Client Account (SAP)|Client Number (SAP)|Benficiarys bank sort code|Beneficiarys bank swift code|Beneficiarys Bank Line 1|Beneficiarys Bank Line 2|Intermediary Bank|Intermediary swift code|FX Rate|Beneficiary Customer|Beneficiary Account Number|Beneficiary’s Bank Country|Resereved for future use|Creation Date/Time|Payment Details|Bank to Bank Info|Payment Charges|Ordering Customer|File Origination Code|Resereved for future use|Charge account|Resereved for future use|Resereved for future use|Resereved for future use 
FCYOut|TESTREF000101||A Company Limited|GB0010001|EUR|0000000663.75|20130327|20130402|10000001|90023562||SBZAZAJJXXX|Standard Bank Joburg|Sandton Joburg||||John Smith|1010102356|ZA||20130327163043|Invoice 23B|Branch code 234234|SHA||XXXX||||| 

명령 아래

echo -n $txt | openssl dgst -binary -sha256 | openssl base64 

는 다음과 같이 값을 제공 : 내가 보낼 때

SqL7nAwQ/Y+2LXXfLaX25CtfSjoShY9+FCRZp5jcGO0= 

그러나 그것은 상대방에게 해독 후 잘못된 정보를 얻고 있습니다 :

그들은 위의 샘플 메시지

1EjGezzIXFT+/QvXUuK1juo8rUJGuymRmUnXgA8OzA8= 

사람이 여기에 어떤 문제가 있는지 좀 도와 주시겠습니까 아래 암호화 된 문자열을 기대하고있다? 가치를 상대방 산출물과 동일하게하고 싶습니다.

답변

0

인코딩은 UTF8이고 줄 바꿈 문자는 없습니다. 다음은 테스트 할 때 사용하는 C# 코드입니다.

SHA256 sha = new SHA256Managed(); 
StringBuilder sbTest = new StringBuilder(); 
sbTest.Append("Transaction Type|External System Reference Number|Original External System Reference|Account title|SAP Company Number|Payment Currency|Payment Amount|Trade/Posting Date|Settlement Date|Client Account (SAP)|Client Number (SAP)|Benficiarys bank sort code|Beneficiarys bank swift code|Beneficiarys Bank Line 1|Beneficiarys Bank Line 2|Intermediary Bank|Intermediary swift code|FX Rate|Beneficiary Customer|Beneficiary Account Number|Beneficiary’s Bank Country|Resereved for future use|Creation Date/Time|Payment Details|Bank to Bank Info|Payment Charges|Ordering Customer|File Origination Code|Resereved for future use|Charge account|Resereved for future use|Resereved for future use|Resereved for future use"); 
sbTest.Append("FCYOut|TESTREF000101||A Company Limited|GB0010001|EUR|0000000663.75|20130327|20130402|10000001|90023562||SBZAZAJJXXX|Standard Bank Joburg|Sandton Joburg||||John Smith|1010102356|ZA||20130327163043|Invoice 23B|Branch code 234234|SHA||XXXX|||||"); 

string str = sbTest.ToString(); 
byte[] data = sha.ComputeHash(Encoding.UTF8.GetBytes(str)); 
StringBuilder sBuilder = new StringBuilder(); 
for (int i = 0; i < data.Length; i++) 
{ 
    sBuilder.Append(data[i].ToString("x2")); 
} 

string base64String = Convert.ToBase64String(data); 
Console.WriteLine(base64String); 
관련 문제