PHP - Symmetric Encryption Implementation
Writing an app that requires symmetric encryption.
I need to be able to have a key (such as 123) and be able to use this key and encrypt a string. Then decrypt the string later using the same key. This encryption needs to be pretty robust and unbreakable. Any functions or suggestions?!? Thinking of using the mcrypt library in some way. Drez Similar TutorialsIf a client connects to a ReactPHP TLS socket server, is it possible to obtain the symmetric key from within the PHP code? Hoping it will allow me to decrypt analysis traffic between two using Wireshark. Hey Guys, Im using an API to run a few calls and im not too experienced with them $character = $armory->getCharacter('bob'); // Character name This is the call it is making now apparently if the name bob doesnt exist then it is meant to provide a "FALSE" response but im just wondering how to check the response - when the name is correct everything displays as it should do What im aiming for is to get the following somehow $character = $armory->getCharacter('deathecus');// Character name If the name exists > continue on > if its false then redirect to a not found page Hi guys, I am having trouble trying to integrate 1shoppingcart.com to a website I am currently working on. They have a samples page, with many language samples, except for PHP. Can anyone point me into the right direction, as this is very urgent that we get this done today. (We have a webinar today, and this is still not done) Any help would be gladly appreciated. Hi All, I'm in the process of learning PHP and I don't know everything so please bare with me. I'm trying to have a simple e-mail script which will send a nice e-mails with variables from a previous form. I don't want to use my PHP servers predefined e-mail settings but define them myself. I plan on using G-Mail's SSL SMTP protocol. Upon looking up scripts for e-mailing I'm always coming across Code: [Select] require_once "Mail.php"; in the code with no explanation on where that file is located. I'm currently using this code for to see if it works: Code: [Select] <?php require_once "Mail.php"; $from = "Sandra Sender <sender@example.com>"; $to = "Ramona Recipient <recipient@example.com>"; $subject = "Hi!"; $body = "Hi,\n\nHow are you?"; $host = "ssl://mail.example.com"; $port = "465"; $username = "smtp_username"; $password = "smtp_password"; $headers = array ('From' => $from, 'To' => $to, 'Subject' => $subject); $smtp = Mail::factory('smtp', array ('host' => $host, 'port' => $port, 'auth' => true, 'username' => $username, 'password' => $password)); $mail = $smtp->send($to, $headers, $body); if (PEAR::isError($mail)) { echo("<p>" . $mail->getMessage() . "</p>"); } else { echo("<p>Message successfully sent!</p>"); } But I get the error Code: [Select] Fatal error: Class 'Mail' not found in C:\wamp\www\Quiz\sendmail.php on line 16 If anyone could be so kind to give me an explanation and assist me in understanding, that'd be great. Thanks, Evan Hello, I am new to payment gateway. I am trying to implement http://www.firstdata.com as the payment gateway in my application. I found that the address Validation System(AVS) will work only after the approval of the transactions. This is strange!!. So I planed to do an pre-auth to check the address, and then do the actual transaction. But if the address validation is failed, I need to release the amount reserved by the pre-auth request. How can I do that. I don't find any way to do that. Void will cancel the completed transaction and not the pre-auth. I tried to post - auth with 0.00 amount, but still it does the ticket only transaction for the full amount reserved by the pre - auth request. Please help me. Girish Hi, My site was recently "hacked" in the sense that Google was made to crawl a rogue page and came to believe it was the original site. This caused a catastrophic decline in Google position and decline in traffic. In researching the issue, it seemed that the solution was to install a forward-confirmed reverse DNS on the site. Yet I've found little information on how to actually implement this. I'm working on a code example I found, but I'm unsure exactly how to apply this even assuming I can get it to work. For those interested in this issue the original site is www.tickerfind.com , the duplicate site is www.handj.net. If you Google "tickerfind.com" you can get the cache, and from this you can see that Google thinks the site is found at handj.net. One of the puzzling things about the sample code (http://smbrown.wordpress.com/2009/04/29/verify-googlebot-forward-reverse-dns/) is that it appears to be determining whether the bot is "good" or "bad", yet I thought the issue was not the bot itself but where it was retrieving the pages to scan. Somehow I thought it would be a "prevention of redirection" type code. So first, I suppose my question is: Am I on the right track. And if so then I can dig into the code. But I'd certainly need to understand why it works. Thanks, Jeff Is there such thing? I designed a while back a rudimentary form based app for my users. We receive from our suppliers hardware manufacturing data in XML files: file name is made of eleven fields separated by tildes, with each field having its own meaning. R&D guys wanted to be able to search each field of the file names so I used regex() with decent results. Problem is that we have now in the upwards of 2.5 million files. And my app can't hack it anymore. I looked at Apache Lucene & Solr. Though it seemed like the best solution to my problem, the fields in the filenames are not peers to the file content. Big no-no with Solr. What is the best way to implement a PHP app with indexing and search capability with such large number of files? Do I have to buy Zend and use Zend_Search? Is it the only way? Thanks for your input. Can someone please help me in setting up OAuth server and client implementation in PHP? Even after lots of googling I could only find very basic and raw examples which are very difficult to understand. Thanks in advance. Hi guys, i'm new to this forum, and a junior php guy.
i need to encrypt a google address like this:
https://redirector.g...=web&cver=html5
i use picasa for my client to store car video etc to show and i want embed in iframe with a jwplayer that i'm customizing.
i see some sample that transform a address like this https://redirector.g...=web&cver=html5 in something like this --> http:\/\/r20---googlevideo.com\/picasa\/redirect.php?encrypt=0f10fd0fd0f90c30b80b80fb0ee0ed0f20fb0ee0ec0fd0f80fb0b70f00f80f80f00f50ee0ff0f20ed0ee0f80b70ec0f80f60b80ff0f20ed0ee0f80f90f50ea1020eb0ea0ec0f40c80f20ed0c60bc0bc0bc0be0c00bb0c00c00c10ed0bf0ed0ee0b90bb0bb0af0f20fd0ea0f00c60bb0bb0af0fc0f80fe0fb0ec0ee0c60f90f20ec0ea0fc0ea0af0ec0f60f80c60fc0ee0f70fc0f20fd0f20ff0ee0e80ec0f80f70fd0ee0f70fd0ae0bc0cd1020ee0fc0af0f20f90c60b90b70b90b70b90b70b90af0f20...etc etc...
i see that there is a redirect.php?encrypt=....... how i can do that?
Thanks in advance 'cause frankly speaking i don't know also what i must search on google.
Hi Guys
I am fairly new to php, I am trying to build a registration form but I am struggling with encrypting the password (I will also be salting the password at a later stage to make it more secure).
The below line of code encrypts the password but saves the values as the values states in the code e.g password saves as 'pass'
$q = "INSERT INTO users (first_name,last_name,email,pass,registration_date) VALUES ('first_name','last_name','email', SHA1('pass'), NOW())";
The below code saves all the values that the user inputs xcept the password which is blank and the message 'Undefined index: SHA1('pass')' is returned
$q = "INSERT INTO users (first_name,last_name,email,pass,registration_date) VALUES ('".$_POST["first_name"]."','".$_POST["last_name"]."','".$_POST["email"]."','".$_POST["SHA1('pass')"]."', NOW())";
I am hoping someone may be able to help me as I have no idea how to fix this. Thank you in advance
I seen the sticky but that didn't have my answer and no place I go is really answering my core question. This just doesn't make sense in my brain, how is using md5 safe. What if someone got say an encrypted pass. The code md5 uses is available to anyone, no? So if they got a hold of it how is it not as easily cracked as it is encrypted. Someone please explain this to me lol, it's like a thorn in my brain. Hi Guys,
First off, not sure if this is the correct area to post. My question is a little bit mixed, including SQL and PHP.
I'm building a basic private messaging system, and planned to use PHP, SQL for the storage, and a little bit of JS on the client. I'm a little confused when it comes to encryption though. My understanding with user password encryption is that the password is stored in the database as a hash, and then a user sent password is compared to the original hash for verification. I've implemented this successfully using password_verify() and password_hash() functions, and I'm pretty sure it's working fine.
However, my big question is in regards to the storage of message data. As far as I can tell, this system won't work, it's really only suitable for password verification because the hash can't really be reverted to the original data, it can only be compared? How should I go about encrypting message data? Is it possible? If I open up a SQL database containing private message data on a server, I don't want to be able to read the contents.
Any help would be greatly appreciated!
I am looking for a way to encrypt a string using PKCS7. I have seen openssl_pkcs7_encrypt() but this involves the creation of temporary files which I don't really need. Is there a way to do this? Hey, I'm a bit stuck. I'm looking for a simple yet secure way to encrypt a string (not hash, I need to retrieve it later) so that I can store legally sensitive data which I need to use again later. I am aware that any kind of reversable data is by nature not properly secure, but it's not my decision. I'd rather see if there's a pre-built function or class for this rather than just writing my own, which wouldn't be too good Thanks in Advance Gareth Dear All respective friend, I'm asking for help. during I know how to code in php. I alway use md5() but I had some problem with abit. can anyone introduce me with persona code encryption without using md5()? Your ideal are very important to me especially small example code. Looking forward from you soon. Kindly Regards, Steve. Hy 2 all, I have some questions about password security that I haven't been able to find an answer yet. Hopefully you guys know. Here it goes: 1. Is it better to hash(sha2) the password and then salt it or salt it and than hash it ? 2. I'm guessing that using a random salt is better than the same salt used for every password. 3. How can you generate a different random salt for each password ? I mean how will the login page know which random salt to mix with the hashed user inserted password and then to compare it with the password stored in the db. (an example would be great(for both: generating and authentication) 4. I saw some codes in which the salt and/or hash and/or password was split into two (ex: hash.salt1a.password.salt1b or password1a.salt.password1b or salt.hash1a.password.hash1b etc.) Is this a good idea ? Is it really more secure ? If so which would be more secure (splitting the password, the hash or the salt) ? 5. Is double hashing (ex: (sha1(md5($password))) any good ? 6. I've been reading something about password salt and pepper ?? What exactly is pepper ? Is it some sort of second salt ? If somebody could enlighten me about these questions, that would be great. Thanks in advance! Is there any tutorial or book where i can learn about how to do the encryption?? thanks in advance I would like to add md5 encryption into the create and login functions but I'm having difficulties with the process. user.php - create user and login functions Code: [Select] <?php function create_user($params) { db_connect_posts(); $query = sprintf("INSERT INTO users SET users.screen_name = '%s', users.user_email = '%s', users.user_pwd = '%s', users.image = '%s', created_at = NOW()" , mysql_real_escape_string($params['screen_name']), mysql_real_escape_string($params['user_email']), mysql_real_escape_string($params['user_pwd']), mysql_real_escape_string($params['image']) ); $result = mysql_query($query); if(!$result) { return false; } else { return true; } } function login($username, $password) { db_connect_posts(); $query = sprintf("SELECT * FROM users WHERE user_email = '%s' AND user_pwd = '%s'" , mysql_real_escape_string($username), mysql_real_escape_string($password) ); $result = mysql_query($query); $number_of_posts = mysql_num_rows($result); if($number_of_posts == 0) { return false; } $row = mysql_fetch_array($result); $_SESSION['user'] = $row; return true; } ?> Register form: Code: [Select] <form action="<?php echo '/'.APP_ROOT.'/'; ?>sessions/signup" method="post"> <fieldset> <legend>Register</legend> <div> <label>Screen Name</label> <input name="user[screen_name]" size="40" type="text" /> </div> <div> <label>E-mail</label> <input name="user[user_email]" size="40" type="text" /> </div> <div> <label>Password</label> <input name="user[user_pwd]" size="40" type="password" /> </div> <div> <label>Image</label> <input name="user[image]" size="40" type="text" /> </div> <input type="submit" name="Register" value="Register" /> </fieldset> </form> Login form: Code: [Select] <form action="<?php echo '/'.APP_ROOT.'/'; ?>sessions/login_user" method="post"> <fieldset> <legend>Login</legend> <div> <label>E-mail</label> <input name="user[user_email]" size="40" type="text" /> </div> <div> <label>Password</label> <input name="user[user_pwd]" size="40" type="password" /> </div> <input type="submit" value="Login" /> </fieldset> </form> I have never worked with des encryption before and have searched through internet getting 3 des and acb - tested multiple code but cant get encrypted the same as in c#
public string EncryptQueryString(string stringToEncrypt)
public string EncryptQueryString(string stringToEncrypt) { byte[] key = { }; byte[] IV = { 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x78 }; try { key = Encoding.UTF8.GetBytes(KEY); using (DESCryptoServiceProvider oDESCrypto = new DESCryptoServiceProvider()) { byte[] inputByteArray = Encoding.UTF8.GetBytes(stringToEncrypt); MemoryStream oMemoryStream = new MemoryStream(); CryptoStream oCryptoStream = new CryptoStream(oMemoryStream, oDESCrypto.CreateEncryptor(key, IV), CryptoStreamMode.Write); oCryptoStream.Write(inputByteArray, 0, inputByteArray.Length); oCryptoStream.FlushFinalBlock(); return Convert.ToBase64String(oMemoryStream.ToArray()); } } catch { throw; } } i followed this ph example but think i am way of course
<?php class DES { protected $method; protected $key; protected $output; protected $iv; protected $options; const OUTPUT_NULL = ''; const OUTPUT_BASE64 = 'base64'; const OUTPUT_HEX = 'hex'; public function __construct($key, $method = 'DES-ECB', $output = '', $iv = '', $options = OPENSSL_RAW_DATA | OPENSSL_NO_PADDING) { $this->key = $key; $this->method = $method; $this->output = $output; $this->iv = $iv; $this->options = $options; } public function encrypt($str) { $str = $this->pkcsPadding($str, 8); $sign = openssl_encrypt($str, $this->method, $this->key, $this->options, $this->iv); if ($this->output == self::OUTPUT_BASE64) { $sign = base64_encode($sign); } else if ($this->output == self::OUTPUT_HEX) { $sign = bin2hex($sign); } return $sign; } public function decrypt($encrypted) { if ($this->output == self::OUTPUT_BASE64) { $encrypted = base64_decode($encrypted); } else if ($this->output == self::OUTPUT_HEX) { $encrypted = hex2bin($encrypted); } $sign = @openssl_decrypt($encrypted, $this->method, $this->key, $this->options, $this->iv); $sign = $this->unPkcsPadding($sign); $sign = rtrim($sign); return $sign; } private function pkcsPadding($str, $blocksize) { $pad = $blocksize - (strlen($str) % $blocksize); return $str . str_repeat(chr($pad), $pad); } private function unPkcsPadding($str) { $pad = ord($str{strlen($str) - 1}); if ($pad > strlen($str)) { return false; } return substr($str, 0, -1 * $pad); } } $key = 'key123456'; $iv = 'iv123456'; $des = new DES($key, 'DES-CBC', DES::OUTPUT_BASE64, $iv); echo $base64Sign = $des->encrypt('Hello DES CBC'); echo "\n"; echo $des->decrypt($base64Sign); echo "\n"; $des = new DES($key, 'DES-ECB', DES::OUTPUT_HEX); echo $base64Sign = $des->encrypt('Hello DES ECB'); echo "\n"; echo $des->decrypt($base64Sign); Edited May 31 by Paulqvz made les cluttered This is what the password encryption code looks like: Code: [Select] function passencr($username, $password){ $pepper = ******; //a hard-coded pepper. $salt = ******; //a customizable salt defined by user. $username = md5($username); $password = md5($password); $newpassword = sha1($username.$password); $finalpassword = sha1($pepper.$newpassword.$salt); return $finalpassword; } So in this script both username and password are encrypted with md5 and then joined together to further encrypt with sha1 method. The finalized string is a combination of the new string, pepper and salt. I wonder if this is secure enough and whether there is a way to improve it. |