search
HomeBackend DevelopmentPHP TutorialSharing of encryption algorithm using XOR operation in PHP MySQL application_PHP tutorial

Sharing of encryption algorithm using XOR operation in PHP MySQL application_PHP tutorial

Jul 21, 2016 pm 03:25 PM
mysqlphpxormainuseshareencryptionprincipleapplicationmethodoflookalgorithmOperation

Principle of XOR algorithm

From the main encryption method, the transposition method is too simple, especially when the amount of data is small, it is easy to guess the plaintext from the ciphertext, and the substitution method is an effective and simple algorithm.

From the characteristics of various substitution operations, the XOR operation is most suitable for simple encryption and decryption operations. The principle of this method is: when a number A and another number B are XORed, another number will be generated. C, if C and B are XORed, C will be restored to A.

Compared with other simple encryption algorithms, the advantages of the XOR algorithm are as follows.

(1) The algorithm is simple and can be easily implemented in high-level languages.

(2) It is fast and can be used at any time and anywhere.

(3) is valid for any character, unlike some simple encryption algorithms, which are only valid for Western characters. After encrypting Chinese characters and then decrypting them, they cannot be restored to the original characters.

XOR algorithm implementation

The previous part introduced the principle of how to use XOR operation for encryption/decryption. This section will use it to encrypt the user's login information. According to the principle of the XOR encryption algorithm introduced in the previous section, it is not difficult to write the following encryption and decryption functions. Encryption algorithms are listed first.

Copy code The code is as follows:


//Encryption function
functionmyEncrypt($string,$key)
{
for($i=0;$i
{
for($j=0;$j
{
$ string[$i]=$string[$i]^$key[$j];
}
}
return$string;
}

4th The line defines the encryption function myEncrypt(), the input parameter $string is plaintext, and $key is the key; the output is the ciphertext generated using $key as the key and using the XOR encryption algorithm.
The outer for loop in lines 6 to 12 loops through each character of the plaintext string, while the inner for loop (lines 8 to 11) loops through each character in the plaintext and each character in the key. Bit XOR operation. The principle has been introduced in the previous section and will not be reiterated.
Similarly, similar to the encryption function, the following decryption function can be written.
Copy code The code is as follows:

//Decryption function
functionmyDecrypt($string,$key)
{
for($i=0;$i
{
for($j=0;$j
{
$string[$i]=$key[$j]^$string[$i];
}
}
return$ string;
}
?>

Line 4 defines the decryption function myDecrypt(), the input parameter $string is the ciphertext, and $key is the key; the output is using $key is used as the key and uses the XOR decryption algorithm to produce the plaintext.
Below, an application example is used to further illustrate the function of the encryption function.
Copy code The code is as follows:

//Example
$my_password="chair";
echo" my_password=$my_password";
$my_key="1234567890″;
$my_password_en=myEncrypt($my_password,$my_key);
echo"my_password_en=$my_password_en";
$my_password_de=myDecrypt( $my_password_en,$my_key);
echo "my_password_de=$my_password_de";

Line 3 first defines a plaintext $my_password, and then defines the key $my_key on line 4.
Lines 5 and 6 respectively call the encryption function to generate ciphertext and output it; in turn, the ciphertext is decrypted on lines 7 and 8.
The results of the above example are as follows.
my_password=chair
my_password_en=RYPXC
my_password_de=chair
Using XOR algorithm to implement authentication
The previous two parts introduce the principle and implementation of information encryption/decryption using XOR operation. The following is , this method will be used to encrypt the user's login password. In this example, in order to protect the user's password, the system wants to achieve the following purposes.
·When registering, the user needs to fill in the user password form.
·In addition to the user himself, no one else can obtain his password information, including system designers and database administrators.
·The system can verify the legitimacy of the user based on the password entered by the user.
In order to achieve the above purpose, when using the XOR algorithm, you can choose the username as plain text, and the key is the user-defined password, and then store the encrypted username in the database.
In addition, when a user logs in, there are the following two ways to verify legitimate users.
(1) Re-encrypt based on the username (plain text) and password (key) information submitted, and use the encrypted information to compare with the password information stored in the database. If they are equal, the user is legitimate, otherwise, for illegal users.
(2) Decrypt based on the password information (plain text) stored in the database and the password (key) information entered by the user, and compare the encrypted information with the user name submitted by the user. If they are equal, the user is legitimate , otherwise, it is an illegal user.
Both methods can achieve the third purpose. In this example, the second method will be used. The implementation code of this example can be implemented based on the implementation of Section 18.4.1 "User Login" and Section 18.4.2 "Check User". The "User Login" page does not need to be changed. The implementation reference of "Check User" is as follows.
Copy code The code is as follows:

session_start();//Load the Session library, be sure To be placed on the first line
$user_name=$_POST["user_name"];
session_register("user_name");//Register the $user_name variable, note that there is no $ symbol
require_once("sys_conf.inc" );//System configuration file, including database configuration information
require_once("encrypy_xor.php");//Contains xor encryption function file
//Connect to the database
$link_id=mysql_connect($DBHOST,$ DBUSER,$DBPWD);
mysql_select_db($DBNAME);//Select database my_chat
//Query whether login user information exists
$str="selectname,passwordfromuserwherename='$user_name'";
$result=mysql_query($str,$link_id);//Execute query
@$rows=mysql_num_rows($result);//Get the number of records of query results
$user_name=$_SESSION["user_name "];
$password=$_POST["password"];
$password_en=myEncrypt($user_name,$password);//Encrypt user information
//For old users
if( $rows!=0)
{
list($name,$pwd)=mysql_fetch_row($result);
$password_de=myDecrypt($pwd,$password);//Decrypt user information
//If the password is entered correctly
if($user_name==$password_de)
{
$str="updateusersetis_online=1wherename='$user_name'andpassword='$password_en'";
$ result=mysql_query($str,$link_id);//Execute query
require("main.php");//Go to the chat page
}
//Password input error
else
{
require("relogin.php");
}
}
//For new users, write their information to the database
else
{
$ str="insertintouser(name,password,is_online)values('$user_name','$password_en',1)";
$result=mysql_query($str,$link_id);//Execute query
require ("main.php");//Go to the chat page
}
//Close the database
mysql_close($link_id);
?>

No. Line 7 introduces the encryption function file encrypy_xor.php, including the two functions introduced in the previous section.
In line 19, the encrypted password value is obtained using the username and password submitted by the user, and for new users, the encrypted value is stored in the database in line 44.
In addition, for old users, obtain the user name and encrypted password information in the database on line 24, and use these two values ​​​​to decrypt on line 25, and then compare the decrypted value with the one submitted by the user on line 28 Username information to check the legitimacy of the user.
Automatically generate keys
The previous part introduced how to use the XOR encryption algorithm to encrypt user information. The password information entered by the user actually becomes the key in the encryption algorithm, and the user name is used as plain text. Using , while this does the job well, logically this approach seems a bit unsound.
This article will introduce a technology that automatically generates keys. You can use the automatically generated keys to encrypt the plain text of passwords submitted by users, making the logic more reasonable.
In this example, it is assumed that the generated key is 512 bits. The code is as follows.
Copy code The code is as follows:


//The automatically generated length is $len The key of
functiongenerate_key($len)
{
$lowerbound=35;
$upperbound=96;
$strMyKey="";
for($i=1; $i{
$rnd=rand(0,100);//Generate random numbers
$k=(($upperbound-$lowerbound)+1)*$rnd+ $lowerbound;
$strMyKey=$strMyKey.$k;
}
return$strMyKey;
}
//Write the key to the file $file_name
functionwrite_key($key ,$file_name)
{
$filename="C:key.txt";
$key=generate_key($key,512);
//Use add mode to open $filename, file pointer will be at the end of the file
if(!$handle=fopen($filename,'w'))
{
print "Cannot open file $filename";
exit;
}
//Write $key to the file we open.
if(!fwrite($handle,$key))
{
print "Cannot write to file $filename";
exit;
}
fclose($handle) ;
}
//Read the key in the key file
functionget_key($file_name)
{
//Open the file
$fp=fopen($file_name," r");
$result="";
//Read line by line
while(!feof($fp))
{
$buffer=fgets($fp,4096 );
$result=$result.$buffer;
}
return$result;
}
///*
$KeyLocation="C:key.txt"; //File to save the key
$key="123456″;
write_key($key,$KeyLocation);
echoget_key($KeyLocation);
//*/
?> ;

The code includes 3 functions.
◆ generate_key($len): Automatically generate a key with length $len
◆ write_key($key,$file_name): Write the key to the file $file_name
◆ get_key($file_name): Read the key value in the key file $file_name
When used, when the user logs in to the system for the first time, the key value is automatically generated for the user. There are two ways to handle this key value.
(1) Store it in a certain field in the database. The disadvantage of this method is that the security of the key in the database cannot be guaranteed;
(2) Save the key locally in the user's computer file, this can prevent the key from being obtained by others, but the disadvantage of this method is that when the user uses other machines to access the system, he cannot log in.
In this example, the second method will be used.
Specifically, lines 11 to 18 of the above code continuously generate keys by generating random numbers, and enhance their complexity through a calculation. The lowerbound and upperbound values ​​are actually the ASCII character range you want to use for encryption. Below is an example of a generated key file.
208123915925183361116049369344372701567721435181102718332639307390344373445407
524316475863232913993383189547474 747394154915312639841226741894189965623523913 95367
593586318332391170941272701152344371709270125776235313540032267139933835677407
6173841356961112391307329494 69623520815987524358635491542913374933524334454251 1363151191
833412771743139654…
Finally, you need to save the key in a safe place on the server, and then you can It is used with encryption algorithms such as XOR to encrypt/decrypt user information. How to use this key in the XOR introduced in the previous section is very simple and will not be described in detail.

http://www.bkjia.com/PHPjc/324110.html

truehttp: //www.bkjia.com/PHPjc/324110.htmlTechArticlePrinciple of XOR algorithm From the main method of encryption, the transposition method is too simple, especially when the amount of data is small It is easy to guess the plaintext from the ciphertext, and the substitution method is an effective simple...
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
PHP's Current Status: A Look at Web Development TrendsPHP's Current Status: A Look at Web Development TrendsApr 13, 2025 am 12:20 AM

PHP remains important in modern web development, especially in content management and e-commerce platforms. 1) PHP has a rich ecosystem and strong framework support, such as Laravel and Symfony. 2) Performance optimization can be achieved through OPcache and Nginx. 3) PHP8.0 introduces JIT compiler to improve performance. 4) Cloud-native applications are deployed through Docker and Kubernetes to improve flexibility and scalability.

PHP vs. Other Languages: A ComparisonPHP vs. Other Languages: A ComparisonApr 13, 2025 am 12:19 AM

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

PHP vs. Python: Core Features and FunctionalityPHP vs. Python: Core Features and FunctionalityApr 13, 2025 am 12:16 AM

PHP and Python each have their own advantages and are suitable for different scenarios. 1.PHP is suitable for web development and provides built-in web servers and rich function libraries. 2. Python is suitable for data science and machine learning, with concise syntax and a powerful standard library. When choosing, it should be decided based on project requirements.

PHP: A Key Language for Web DevelopmentPHP: A Key Language for Web DevelopmentApr 13, 2025 am 12:08 AM

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

PHP: The Foundation of Many WebsitesPHP: The Foundation of Many WebsitesApr 13, 2025 am 12:07 AM

The reasons why PHP is the preferred technology stack for many websites include its ease of use, strong community support, and widespread use. 1) Easy to learn and use, suitable for beginners. 2) Have a huge developer community and rich resources. 3) Widely used in WordPress, Drupal and other platforms. 4) Integrate tightly with web servers to simplify development deployment.

Beyond the Hype: Assessing PHP's Role TodayBeyond the Hype: Assessing PHP's Role TodayApr 12, 2025 am 12:17 AM

PHP remains a powerful and widely used tool in modern programming, especially in the field of web development. 1) PHP is easy to use and seamlessly integrated with databases, and is the first choice for many developers. 2) It supports dynamic content generation and object-oriented programming, suitable for quickly creating and maintaining websites. 3) PHP's performance can be improved by caching and optimizing database queries, and its extensive community and rich ecosystem make it still important in today's technology stack.

What are Weak References in PHP and when are they useful?What are Weak References in PHP and when are they useful?Apr 12, 2025 am 12:13 AM

In PHP, weak references are implemented through the WeakReference class and will not prevent the garbage collector from reclaiming objects. Weak references are suitable for scenarios such as caching systems and event listeners. It should be noted that it cannot guarantee the survival of objects and that garbage collection may be delayed.

Explain the __invoke magic method in PHP.Explain the __invoke magic method in PHP.Apr 12, 2025 am 12:07 AM

The \_\_invoke method allows objects to be called like functions. 1. Define the \_\_invoke method so that the object can be called. 2. When using the $obj(...) syntax, PHP will execute the \_\_invoke method. 3. Suitable for scenarios such as logging and calculator, improving code flexibility and readability.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),