


editor php Zimo akan memperkenalkan cara menukar algoritma XTEA tersuai daripada JavaScript kepada Golang dalam artikel ini. Algoritma XTEA ialah algoritma penyulitan simetri yang mudah dan berkesan yang biasa digunakan untuk melindungi keselamatan data. Dengan menukar algoritma XTEA daripada JavaScript kepada Golang, kami boleh melaksanakan fungsi penyulitan dan penyahsulitan yang sama dalam bahasa pengaturcaraan yang berbeza, meningkatkan kemudahalihan kod dan saling kendali. Artikel ini akan memperkenalkan prinsip algoritma dan proses penukaran secara terperinci untuk membantu pembaca memahami dan menggunakan algoritma XTEA dengan lebih baik.
Kandungan soalan
Saya kini menukar penyulitan xtea tersuai saya daripada kod javascript kepada golang, tetapi output golang tidak betul dan berbeza daripada output javascript, berikut ialah kod sumber javascript saya:
function sample(e, t) { for (var n = 32, r = 0; 0 < n--; ) { e[0] += (((e[1] << 4) ^ (e[1] >> 5)) + e[1]) ^ (r + t[3 & r]); r += -1640531527; e[1] += (((e[0] << 4) ^ (e[0] >> 5)) + e[0]) ^ (r + t[(r >> 11) & 3]); } } var temp = [15, 16]; var temp_2 = [14, 15, 16, 17]; sample(temp, temp_2); console.log(temp);
dan kod sumber golang:
func sample(v *[2]uint32, key *[4]uint32) { const ( num_rounds uint32 = 32 delta uint32 = 0x9E3779B9 ) for i, sum := uint32(0), uint32(0); i < num_rounds; i++ { v[0] += (((v[1] << 4) ^ (v[1] >> 5)) + v[1]) ^ (sum + key[sum&3]) sum += delta v[1] += (((v[0] << 4) ^ (v[0] >> 5)) + v[0]) ^ (sum + key[(sum>>11)&3]) } }
Saya rasa masalahnya berkaitan dengan nisbah emas dan penukaran kepada sistem titik terapung 64 bit javascript, saya tidak menggunakannya kerana saya tidak tahu bagaimana untuk melakukannya dengan tepat
Penyelesaian
Ini adalah pelaksanaannya:
package main import ( "fmt" ) func main() { v := [2]int64{15, 16} key := [4]int64{14, 15, 16, 17} sample(&v, &key) } func sample(v *[2]int64, key *[4]int64) { const ( num_rounds = 32 delta int64 = 1640531527 ) for i, sum := 0, int64(0); i < num_rounds; i++ { temp := int32(v[1]) v[0] += int64((((temp << 4) ^ (temp >> 5)) + temp) ^ int32(sum+key[int32(sum)&3])) sum -= delta temp = int32(v[0]) v[1] += int64((((temp << 4) ^ (temp >> 5)) + temp) ^ int32(sum+key[(int32(sum)>>11)&3])) } fmt.Println(*v) // Output: [6092213800 11162584543] }
Arahan
Julat selamatinteger javascript adalah antara -(2^53 - 1)
和 2^53 - 1
(lihat Julat nombor bulat). Bahagian rumit dalam pelaksanaan javascript ialah pengendali bitwise sentiasa menukar operan kepada integer 32-bit (lihat Penukaran nombor lebar tetap).
Untuk konsisten dengan pelaksanaan javascript, jenis data hendaklah int64
(int64
(int32
或 uint32
没有足够的空间容纳 -(2^53 - 1)
和 2^53 - 1
之间的数字)。所以这些变量应该声明为 int64
atau uint32
tidak mempunyai ruang yang cukup untuk nombor antara
int64
:-
Item dalam
v
-
Item dalam
key
-
sum
-
delta
int32
Kami kemudian menukar setiap operan kepada
Atas ialah kandungan terperinci Tukar algoritma XTEA tersuai daripada JavaScript kepada Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Gohandlesinterfacesandtypeassertionsefectively, enhancingcodeflexabilityandrobustness.1) snossersertionsallowruntimetypechecking, asseenwiththeshaphapeinterfaceandcircletype.2) typeWitchhandLemultipypeseficeMemently, gunaurvariousshapePhipeMemently, gunaurvariousshapePhipeMemently, gunaurvariousshapePhipeMemently, bermanfaat untuk

GO pengendalian kesilapan bahasa menjadi lebih fleksibel dan boleh dibaca melalui kesilapan dan kesilapan.as fungsi. 1.errors.is digunakan untuk memeriksa sama ada ralat adalah sama dengan ralat yang ditentukan dan sesuai untuk pemprosesan rantaian ralat. 2.Errors.as bukan sahaja boleh menyemak jenis ralat, tetapi juga menukar ralat kepada jenis tertentu, yang mudah untuk mengekstrak maklumat ralat. Menggunakan fungsi ini dapat memudahkan logik pengendalian ralat, tetapi perhatikan penyampaian rantaian ralat yang betul dan mengelakkan kebergantungan yang berlebihan untuk mencegah kerumitan kod.

Tomakeoapplicationsrunfasterandmoreeficiently, useprofilingtools, leverageconcurrency, andmanagememoryeffectively.1) usepprofforcpuandmemoryprofiloidentificybottlenecks.2)

Go'sfutureisBrightWithTrendsLikeImprovedTooling, Generik, Cloud-NativeadOption, PerformanceEnhancements, dan WebassemblyIntegration, ButchallengesincludemaintainingsImplicityandImprovingErrorHandling.

Goroutinesarefunctionsormethodsthatrunconcurlyingo, enablingefficientandlightweightconcurrency.1) theareManagedBygo'sruntimeusingmultiplexing, membolehkanThousthyandstorunonfewerthreads.2) goroutinesimproveprovperformancethoaseaseaseasyfaskmismenteFf

Thepurposeoftheinitfunctioningoistoinitializevariables, setupconfigurations, orperformnessarysetupbeforethemainfunctionExecutes.useinitby: 1) Placingitinyourcodetorunautomaticallybeforemain, 2) penyimpanan

Gointerfacesaremethodsignaturesetsthattypesmustimplement,enablingpolymorphismwithoutinheritanceforcleaner,modularcode.Theyareimplicitlysatisfied,usefulforflexibleAPIsanddecoupling,butrequirecarefulusetoavoidruntimeerrorsandmaintaintypesafety.

Gunakan fungsi pulih () dalam GO untuk pulih dari panik. Kaedah khusus adalah: 1) Gunakan pulih () untuk menangkap panik dalam fungsi penangguhan untuk mengelakkan kemalangan program; 2) rekod maklumat ralat terperinci untuk debugging; 3) memutuskan sama ada untuk meneruskan pelaksanaan program berdasarkan keadaan tertentu; 4) Gunakan dengan berhati -hati untuk mengelakkan mempengaruhi prestasi.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini
