Yorumları: 172
Konuları: 16
Kayıt Tarihi: 10-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 5.340 Üstad
18-12-2020, Saat: 10:16
(Son Düzenleme: 18-12-2020, Saat: 11:53, Düzenleyen: vkamadan.)
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.
Yorumları: 854
Konuları: 40
Kayıt Tarihi: 11-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.377 Uzman
(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.
Yorumları: 172
Konuları: 16
Kayıt Tarihi: 10-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 5.340 Üstad
(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('');
Yorumları: 854
Konuları: 40
Kayıt Tarihi: 11-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.377 Uzman
18-12-2020, Saat: 11:08
(Son Düzenleme: 18-12-2020, Saat: 11:09, Düzenleyen: hi_selamlar.)
(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.
Yorumları: 172
Konuları: 16
Kayıt Tarihi: 10-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 5.340 Üstad
(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.
Yorumları: 1.902
Konuları: 23
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 21.290 Üstad
18-12-2020, Saat: 11:30
(Son Düzenleme: 18-12-2020, Saat: 11:33, Düzenleyen: mrmarman.)
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.
Saygılarımla
Muharrem ARMAN
Yorumları: 172
Konuları: 16
Kayıt Tarihi: 10-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 5.340 Üstad
18-12-2020, Saat: 11:50
(Son Düzenleme: 18-12-2020, Saat: 11:50, Düzenleyen: vkamadan.
Sebep: yazım hatası
)
(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.
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.
Yorumları: 1.902
Konuları: 23
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 21.290 Üstad
18-12-2020, Saat: 13:07
(Son Düzenleme: 18-12-2020, Saat: 13:55, Düzenleyen: Mr.Developer.)
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
|