<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>암호화 :: 태그 :: 모두의프린터</title><link>https://modu-print.com/tags/%EC%95%94%ED%98%B8%ED%99%94/</link><description/><generator>Hugo</generator><language>ko-KR</language><lastBuildDate>Sat, 05 Aug 2023 08:47:32 +0900</lastBuildDate><atom:link href="https://modu-print.com/tags/%EC%95%94%ED%98%B8%ED%99%94/index.xml" rel="self" type="application/rss+xml"/><item><title>TEA Encryption Algorithm, TEA 암호화 알고리즘</title><link>https://modu-print.com/posts/3879/</link><pubDate>Wed, 09 Jun 2021 13:29:00 +0900</pubDate><guid>https://modu-print.com/posts/3879/</guid><description>C++ // Encryption ( 8 Byte ) void encipher( unsigned long const v, unsigned long const w, const unsigned long const k ) { register unsigned long y = v[0], z = v[1], sum = 0, delta = 0x9E3779B9, a = k[0], b = k[1], c = k[2], d = k[3], n = 8; while(n–&gt;0) { sum += delta; y += (z &lt;&lt; 4)+a ^ z+sum ^ (z &gt;&gt; 5)+b; z += (y &lt;&lt; 4)+c ^ y+sum ^ (y &gt;&gt; 5)+d; } w[0] = y; w[1] = z; } // Decryption void decipher( unsigned long const v, unsigned long const w, const unsigned long const k ) { register unsigned long y = v[0], z = v[1], sum = 0, delta = 0x9E3779B9, a = k[0], b = k[1], c = k[2], d = k[3], n = 8; //sum = delta&lt;&lt;5;//, in general sum = delta * n / sum = delta n; while(n–&gt;0) { z -= (y &lt;&lt; 4)+c ^ y+sum ^ (y &gt;&gt; 5)+d; y -= (z &lt;&lt; 4)+a ^ z+sum ^ (z &gt;&gt; 5)+b; sum -= delta; } w[0] = y; w[1] = z; } / *&#9;TEA_EncryptData / unsigned long TEA_EncryptData( char plainData, char encData, unsigned long size , unsigned long key ) { unsigned long dwPos = 0; for( unsigned long i = 0; i &lt; size; i += 8 ) { encipher( (unsigned long)&amp;plainData[i], (unsigned long)&amp;encData[dwPos], key ); dwPos += 8; } return dwPos; } / *&#9;TEA_DecryptData / unsigned long TEA_DecryptData( char encData, char plainData, unsigned long size, unsigned long key ) { unsigned long dwPos = 0; for( unsigned long i = 0; i &lt; size; i += 8 ) { decipher( (unsigned long*)&amp;encData[i], (unsigned long*)&amp;plainData[dwPos], key ); dwPos += 8; } return dwPos; }</description></item></channel></rss>