Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Base64 Encoding ve CryptoJS (ÇÖZÜLDÜ)
#1
Merhaba ,
CryptoJS adında bir Java Script kitaplığı mevcut (https://cryptojs.gitbook.io/docs/), içerisinde temel şifreleme algoritmaları barındırıyor.

var yazi= "edf218f1573f12e3969e4c50a0b6d259cd7aed89";

var base64yazi = CryptoJS.enc.Base64.stringify(yazi);

Bu kullanım sonrasında  ilgili kitaplığın verdiği sonuç 7fIY8Vc/EuOWnkxQoLbSWc167Yk=  iken , 
Delphi tarafında sunulan fonksiyonlarla aşağı daki gibi bir kullanımda ,

//uses System.NetEncoding
procedure Kodla ;
var
yazi , base64yazi : string ;
begin
yazi:='edf218f1573f12e3969e4c50a0b6d259cd7aed89';
base64yazi := TNetEncoding.Base64.Encode( yazi );
end;

aynı değer için aldığım sonuç ZWRmMjE4ZjE1NzNmMTJlMzk2OWU0YzUwYTBiNmQyNTljZDdhZWQ4OQ==

Web tabanlı online base64 Decode , Encode  araçlarında da Delphi deki sonucu alıyorum, CryptoJS kitaplığı nın ürettiği türde bir dönüşüm gerçekleştirmek istiyorum.

Desteğinizi rica ederim.
Cevapla
#2
(18-12-2020, Saat: 10:16)vkamadan Adlı Kullanıcıdan Alıntı: Merhaba ,
CryptoJS adında bir Java Script kitaplığı mevcut (https://cryptojs.gitbook.io/docs/), içerisinde temel şifreleme algoritmaları barındırıyor.

var yazi= "edf218f1573f12e3969e4c50a0b6d259cd7aed89";

var base64yazi = CryptoJS.enc.Base64.stringify(yazi);

Bu kullanım sonrasında  ilgili kitaplığın verdiği sonuç 7fIY8Vc/EuOWnkxQoLbSWc167Yk=  iken , 
Delphi tarafında sunulan fonksiyonlarla aşağı daki gibi bir kullanımda ,

//uses System.NetEncoding
procedure Kodla ;
var
yazi , base64yazi : string ;
begin
yazi:='edf218f1573f12e3969e4c50a0b6d259cd7aed89';
base64yazi := TNetEncoding.Base64.Encode( yazi );
end;

aynı değer için aldığım sonuç ZWRmMjE4ZjE1NzNmMTJlMzk2OWU0YzUwYTBiNmQyNTljZDdhZWQ4OQ==

Web tabanlı online base64 Decode , Encode  araçlarında da Delphi deki sonucu alıyorum, CryptoJS kitaplığı nın ürettiği türde bir dönüşüm gerçekleştirmek istiyorum.

Desteğinizi rica ederim.

Merhabalar,

Bir kaç konuda değinilmiş incelemek isteyebilirsiniz.

1. https://stackoverflow.com/questions/3218...encryption
2. https://stackoverflow.com/questions/5795...rom-base64
3. https://github.com/brix/crypto-js/issues/150

Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#3
(18-12-2020, Saat: 10:47)hi_selamlar Adlı Kullanıcıdan Alıntı:
(18-12-2020, Saat: 10:16)vkamadan Adlı Kullanıcıdan Alıntı: Merhaba ,
CryptoJS adında bir Java Script kitaplığı mevcut (https://cryptojs.gitbook.io/docs/), içerisinde temel şifreleme algoritmaları barındırıyor.

var yazi= "edf218f1573f12e3969e4c50a0b6d259cd7aed89";

var base64yazi = CryptoJS.enc.Base64.stringify(yazi);

Bu kullanım sonrasında  ilgili kitaplığın verdiği sonuç 7fIY8Vc/EuOWnkxQoLbSWc167Yk=  iken , 
Delphi tarafında sunulan fonksiyonlarla aşağı daki gibi bir kullanımda ,

//uses System.NetEncoding
procedure Kodla ;
var
yazi , base64yazi : string ;
begin
yazi:='edf218f1573f12e3969e4c50a0b6d259cd7aed89';
base64yazi := TNetEncoding.Base64.Encode( yazi );
end;

aynı değer için aldığım sonuç ZWRmMjE4ZjE1NzNmMTJlMzk2OWU0YzUwYTBiNmQyNTljZDdhZWQ4OQ==

Web tabanlı online base64 Decode , Encode  araçlarında da Delphi deki sonucu alıyorum, CryptoJS kitaplığı nın ürettiği türde bir dönüşüm gerçekleştirmek istiyorum.

Desteğinizi rica ederim.

Merhabalar,

Bir kaç konuda değinilmiş incelemek isteyebilirsiniz.

1. https://stackoverflow.com/questions/3218...encryption
2. https://stackoverflow.com/questions/5795...rom-base64
3. https://github.com/brix/crypto-js/issues/150

Kolay gelsin.

Teşekkürler , bu referanslar la karşılaşmıştım, ne yazık ki bir çözüme ulaşamadım.

ilgili JS kitaplığının kaynak kodlarından  (https://cdn.jsdelivr.net/npm/crypto-js@4...-base64.js) yola çıkılarak bir sonuca varma niyetine girdim ancak işin içinden çıkamadım.

 *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);
         */
       stringify: function (wordArray) {
           // Shortcuts
           var words = wordArray.words;
           var sigBytes = wordArray.sigBytes;
           var map = this._map;

           // Clamp excess bits
           wordArray.clamp();

           // Convert
           var base64Chars = [];
           for (var i = 0; i < sigBytes; i += 3) {
               var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;
               var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
               var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;

               var triplet = (byte1 << 16) | (byte2 << 8) | byte3;

               for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {
                   base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
               }
           }

           // Add padding
           var paddingChar = map.charAt(64);
           if (paddingChar) {
               while (base64Chars.length % 4) {
                   base64Chars.push(paddingChar);
               }
           }

           return base64Chars.join('');
Cevapla
#4
(18-12-2020, Saat: 10:55)vkamadan Adlı Kullanıcıdan Alıntı:
(18-12-2020, Saat: 10:47)hi_selamlar Adlı Kullanıcıdan Alıntı: Merhabalar,

Bir kaç konuda değinilmiş incelemek isteyebilirsiniz.

1. https://stackoverflow.com/questions/3218...encryption
2. https://stackoverflow.com/questions/5795...rom-base64
3. https://github.com/brix/crypto-js/issues/150

Kolay gelsin.

Teşekkürler , bu referanslar la karşılaşmıştım, ne yazık ki bir çözüme ulaşamadım.

ilgili JS kitaplığının kaynak kodlarından  (https://cdn.jsdelivr.net/npm/crypto-js@4...-base64.js) yola çıkılarak bir sonuca varma niyetine girdim ancak işin içinden çıkamadım.

 *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);
         */
       stringify: function (wordArray) {
           // Shortcuts
           var words = wordArray.words;
           var sigBytes = wordArray.sigBytes;
           var map = this._map;

           // Clamp excess bits
           wordArray.clamp();

           // Convert
           var base64Chars = [];
           for (var i = 0; i < sigBytes; i += 3) {
               var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;
               var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
               var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;

               var triplet = (byte1 << 16) | (byte2 << 8) | byte3;

               for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {
                   base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
               }
           }

           // Add padding
           var paddingChar = map.charAt(64);
           if (paddingChar) {
               while (base64Chars.length % 4) {
                   base64Chars.push(paddingChar);
               }
           }

           return base64Chars.join('');

Merhabalar,

var test = CryptoJS.enc.Base64.parse("Hello World");

alert(CryptoJS.enc.Base64.stringify(test));

Şeklinde bir sonuç olabilir mi?

var textString = 'Hello world'; // Utf8-encoded string
var words = CryptoJS.enc.Utf8.parse(textString); // WordArray object
var base64 = CryptoJS.enc.Base64.stringify(words); // string: 'SGVsbG8gd29ybGQ='
var base64 = 'SGVsbG8gd29ybGQ=';
var words = CryptoJS.enc.Base64.parse(base64);
var textString = CryptoJS.enc.Utf8.stringify(words); // 'Hello world'

Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#5
(18-12-2020, Saat: 11:08)hi_selamlar Adlı Kullanıcıdan Alıntı:
(18-12-2020, Saat: 10:55)vkamadan Adlı Kullanıcıdan Alıntı: Teşekkürler , bu referanslar la karşılaşmıştım, ne yazık ki bir çözüme ulaşamadım.

ilgili JS kitaplığının kaynak kodlarından  (https://cdn.jsdelivr.net/npm/crypto-js@4...-base64.js) yola çıkılarak bir sonuca varma niyetine girdim ancak işin içinden çıkamadım.

 *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);
         */
       stringify: function (wordArray) {
           // Shortcuts
           var words = wordArray.words;
           var sigBytes = wordArray.sigBytes;
           var map = this._map;

           // Clamp excess bits
           wordArray.clamp();

           // Convert
           var base64Chars = [];
           for (var i = 0; i < sigBytes; i += 3) {
               var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;
               var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
               var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;

               var triplet = (byte1 << 16) | (byte2 << 8) | byte3;

               for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {
                   base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
               }
           }

           // Add padding
           var paddingChar = map.charAt(64);
           if (paddingChar) {
               while (base64Chars.length % 4) {
                   base64Chars.push(paddingChar);
               }
           }

           return base64Chars.join('');

Merhabalar,

var test = CryptoJS.enc.Base64.parse("Hello World");

alert(CryptoJS.enc.Base64.stringify(test));

Şeklinde bir sonuç olabilir mi?

var textString = 'Hello world'; // Utf8-encoded string
var words = CryptoJS.enc.Utf8.parse(textString); // WordArray object
var base64 = CryptoJS.enc.Base64.stringify(words); // string: 'SGVsbG8gd29ybGQ='
var base64 = 'SGVsbG8gd29ybGQ=';
var words = CryptoJS.enc.Base64.parse(base64);
var textString = CryptoJS.enc.Utf8.stringify(words); // 'Hello world'

Kolay gelsin.

"Parse"  decode işlemi için kullanılıyor.
Bu kitaplık farklı bir standart uyguluyor çözemedik. Delphi karşılığını arıyoruz.
Cevapla
#6
Merhaba.

- yazi değişkeni içeriğiniz HEX kodları "string" olarak barındırıyor. Bunu HexToBin fonksiyonlarınız vardır, önce byte haline dönüştürüp öyle Base64 alırsanız istediğiniz olur.

- Binary içeriği ise string gibi Base64 yapmak için de bir stream'a alıp öyle yapmalısınız.

aou015br7tny5cpgmugz.png
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#7
(18-12-2020, Saat: 11:30)mrmarman Adlı Kullanıcıdan Alıntı: Merhaba.

- yazi değişkeni içeriğiniz HEX kodları "string" olarak barındırıyor. Bunu HexToBin fonksiyonlarınız vardır, önce byte haline dönüştürüp öyle Base64 alırsanız istediğiniz olur.

- Binary içeriği ise string gibi Base64 yapmak için de bir stream'a alıp öyle yapmalısınız.

aou015br7tny5cpgmugz.png

Muharrem bey çok teşekkür ederim, 
Encode edilecek olan string değerin Hex bilgiler bütünü olduğunu fark etmemi sağladınız ve önerdiğiniz yöntemle aynı değeri yakalayabildim.

function HexStringToBase64(const HexStr: string): string;
var
 md5bytes: TBytes;
begin
 SetLength(md5Bytes, Length(HexStr) div 2);
 HexToBin(PChar(HexStr), Pointer(md5Bytes), Length(md5Bytes));
 Result := TNetEncoding.Base64.EncodeBytesToString(md5Bytes);
end;

İyi çalışmalar dilerim.
Cevapla
#8
Olası Referans aldığınız çözümde güzel bir detay da verilmiş.
XE7'den önceki bir Delphi sürümü varsa Indy ile bunu yapmak isteyebilen olur diye onu da paylaşmış. Onu da ekleyelim.

TNetEncoding kullanarak ( Delphi XE7 ve sonrası ) :

uses
  System.Classes, System.NetEncoding;

function HexStringToBase64(const HexStr: string): string;
var
 md5bytes: TBytes;
begin
 SetLength(md5Bytes, Length(HexStr) div 2);
 HexToBin(PChar(HexStr), Pointer(md5Bytes), Length(md5Bytes));
 Result := TNetEncoding.Base64.EncodeBytesToString(md5Bytes);
end;



Indy kullanarak :

function HexStringToBase64(const HexStr: string): string;
var
 md5bytes: TIdBytes;
begin
 SetLength(md5Bytes, Length(HexStr) div 2);
 HexToBin(PChar(HexStr), Pointer(md5Bytes), Length(md5Bytes));
 Result := TIdEncoderMIME.EncodeBytes(md5Bytes);
end;
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  SQL Table Type parametre gecisi hakkında (Çözüldü) adelphiforumz 1 214 09-04-2026, Saat: 15:53
Son Yorum: adelphiforumz
  Online Xslt Editör | Base64 Resim Dönüştürme ahmet6513 5 1.515 08-08-2025, Saat: 12:30
Son Yorum: ahmet6513
  SHA-512 algoritması ile base64 encode edilmesi commsense 2 904 04-03-2025, Saat: 22:02
Son Yorum: commsense
  FastReport Dinamik Sayıya Göre Etiket Bastırma [ÇÖZÜLDÜ] bünyamin68 2 767 09-01-2025, Saat: 13:47
Son Yorum: bünyamin68
  paslibvlcplayerin gec acilmasi sorunu-COZULDU sadikacar60 7 1.163 08-10-2024, Saat: 09:25
Son Yorum: mrmarman



Konuyu Okuyanlar: 1 Ziyaretçi