Code: Alles auswählen.
//setzten von variable "strText"
string strText ="Test081520130101";
// UTF-8 Umwandeln strText zu Byte
byte[] utf8Bytes = GetUtf8Bytes(strText);
// Encrypt mit SHA1
byte[] sha1Hash = ComputeSHA1Hash(utf8Bytes);
// Konvertieren jeden Byte byte in einen hexadecimal String
string accessKey = ByteArrayToHexString(sha1Hash);
Einer meiner ganz speziellen Freunde weil eine Doku zu dem FuBa vorhanden ist. Aber nur wenn man auf deutsch angemeldet ist *sigh*a-dead-trousers hat geschrieben:CALCULATE_HASH_FOR_CHAR
Oder man geht ueber die SE61:black_adept hat geschrieben:Einer meiner ganz speziellen Freunde weil eine Doku zu dem FuBa vorhanden ist. Aber nur wenn man auf deutsch angemeldet ist *sigh*a-dead-trousers hat geschrieben:CALCULATE_HASH_FOR_CHAR
Code: Alles auswählen.
Document Class Function module and parameter
Language German
Function Module CALCULATE_HASH_FOR_CHAR
Parameters
Code: Alles auswählen.
DATA: text(100) TYPE C VALUE 'TEST', int TYPE I VALUE 258.
DATA: buffer TYPE XSTRING, conv TYPE REF TO cl_abap_conv_out_ce.
conv = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' endian = 'L' ).
CALL METHOD conv->write( data = text n = 4 ).
CALL METHOD conv->write( data = int ).
buffer = conv->get_buffer( ).
WRITE buffer.
Das ist BIT und nicht BYTE.stony007_de hat geschrieben:BYTE "01010100 01000101 01010011 01010100"
Code: Alles auswählen.
conv->convert( exporting data = text importing buffer = buffer ).
Code: Alles auswählen.
DATA: text(100) TYPE C VALUE 'TEST', int TYPE I VALUE 258.
DATA: buffer TYPE XSTRING, conv TYPE REF TO cl_abap_conv_out_ce.
conv = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' endian = 'L' ).
* CALL METHOD conv->write( data = text n = 4 ). <-- Die "gesuchten" 54455354
* CALL METHOD conv->write( data = int ). <-- Zusätzliche 02010000
* buffer = conv->get_buffer( ).
conv->convert( exporting data = text importing buffer = buffer ).
WRITE buffer.
Die zusätzlichen 02010000 kommen von dem INT das du ebenfalls auf den Ausgabebuffer geschrieben hast. (Ich hab das in deinem Code mal markiert)stony007_de hat geschrieben:Das Ergebnis zeigt mir "5445535402010000"?
Code: Alles auswählen.
54455354202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020
Code: Alles auswählen.
*Text zum wandeln
DATA: text(100) TYPE C VALUE 'TEST'.
* Variable welche gefüllt wird
DATA: buffer TYPE XSTRING, conv TYPE REF TO cl_abap_conv_out_ce.
conv = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' endian = 'L' ).
CALL METHOD conv->write( data = text n = 4 ).
conv->convert( exporting data = text importing buffer = buffer ).
buffer = conv->get_buffer( ).
data: b(1) type n,
l_bin type string.
DO.
GET BIT sy-index OF buffer INTO b.
IF sy-subrc <> 0. EXIT. ENDIF.
CONCATENATE l_bin b INTO l_bin.
CONDENSE l_bin NO-GAPS.
ENDDO.
write: l_bin.
Sorry, ja, stimmt. Bei meinem Beispiel hat die Längenangabe gefehlt. TEXT ist ja 100 Zeichen lang und deswegen kommen hinten die ganzen Leerzeichen (20) dazu.stony007_de hat geschrieben:Hab das gearde mal versucht
als Ergebnis erhalte ich nun :Code: Alles auswählen.
54455354202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020
hmmm... Du weißt aber schon, dass du mit deinem Code eigentlich wieder einen Text hast und dessen SHA1 entspricht nicht dem den du über den (tatsächlichen) HEX-Wert bekommen würdest.stony007_de hat geschrieben:Ich hab noch was gefunden. Ich convertiere den HEX Code im nachhinein.
...
jetzt geht es drum, den SHA1 zu ziehen.
Bin gerade am suchen welche Werte ich dann in die Funktion übergebe bzw. welche ich dann raus hole. nehm ich dann die Var "buffer"?,Ansonsten kannst du den FuBa CALCULATE_HASH_FOR_RAW verwenden, um den Hash des ursprünglichen HEX-Wertes zu ermitteln.
Code: Alles auswählen.
DATA: l_hash type HASH160X.
call function 'CALCULATE_HASH_FOR_RAW'
exporting
alg = 'SHA1'
data = buffer
importing
HASH = l_hash.