Overview

Namespaces

  • Kotchasan
    • Cache
    • Database
    • Http
    • Log
    • Orm
  • None
  • PHP
  • Psr
    • Cache
    • Http
      • Message
    • Log

Classes

  • ArrayIterator
  • DateInterval
  • DOMNode
  • Kotchasan
  • Kotchasan\Accordion
  • Kotchasan\ApiController
  • Kotchasan\ArrayTool
  • Kotchasan\Cache\ApcCache
  • Kotchasan\Cache\Cache
  • Kotchasan\Cache\CacheItem
  • Kotchasan\Cache\FileCache
  • Kotchasan\CKEditor
  • Kotchasan\Collection
  • Kotchasan\Config
  • Kotchasan\Controller
  • Kotchasan\Country
  • Kotchasan\Csv
  • Kotchasan\Curl
  • Kotchasan\Currency
  • Kotchasan\Database
  • Kotchasan\Database\Db
  • Kotchasan\Database\DbCache
  • Kotchasan\Database\Driver
  • Kotchasan\Database\PdoMysqlDriver
  • Kotchasan\Database\Query
  • Kotchasan\Database\QueryBuilder
  • Kotchasan\Database\Schema
  • Kotchasan\Database\Sql
  • Kotchasan\DataTable
  • Kotchasan\Date
  • Kotchasan\DOMNode
  • Kotchasan\DOMParser
  • Kotchasan\Email
  • Kotchasan\File
  • Kotchasan\Files
  • Kotchasan\Form
  • Kotchasan\Grid
  • Kotchasan\Html
  • Kotchasan\Htmldoc
  • Kotchasan\HtmlTable
  • Kotchasan\Http\AbstractMessage
  • Kotchasan\Http\AbstractRequest
  • Kotchasan\Http\Message
  • Kotchasan\Http\NotFound
  • Kotchasan\Http\Request
  • Kotchasan\Http\Response
  • Kotchasan\Http\Stream
  • Kotchasan\Http\UploadedFile
  • Kotchasan\Http\Uri
  • Kotchasan\Image
  • Kotchasan\InputItem
  • Kotchasan\Inputs
  • Kotchasan\KBase
  • Kotchasan\Language
  • Kotchasan\ListItem
  • Kotchasan\Log\AbstractLogger
  • Kotchasan\Log\Logger
  • Kotchasan\Login
  • Kotchasan\Menu
  • Kotchasan\Mime
  • Kotchasan\Model
  • Kotchasan\Number
  • Kotchasan\ObjectTool
  • Kotchasan\Orm\Field
  • Kotchasan\Orm\Recordset
  • Kotchasan\Password
  • Kotchasan\Pdf
  • Kotchasan\Province
  • Kotchasan\Router
  • Kotchasan\Session
  • Kotchasan\Singleton
  • Kotchasan\Tab
  • Kotchasan\TableRow
  • Kotchasan\Template
  • Kotchasan\Text
  • Kotchasan\Validator
  • Kotchasan\View
  • PHPMailer
  • Psr\Log\AbstractLogger
  • Psr\Log\LogLevel
  • Psr\Log\NullLogger
  • SMTP

Interfaces

  • ArrayAccess
  • Countable
  • DateTimeInterface
  • Iterator
  • IteratorAggregate
  • Psr\Cache\CacheItemInterface
  • Psr\Cache\CacheItemPoolInterface
  • Psr\Http\Message\MessageInterface
  • Psr\Http\Message\RequestInterface
  • Psr\Http\Message\ResponseInterface
  • Psr\Http\Message\ServerRequestInterface
  • Psr\Http\Message\StreamInterface
  • Psr\Http\Message\UploadedFileInterface
  • Psr\Http\Message\UriInterface
  • Psr\Log\LoggerAwareInterface
  • Psr\Log\LoggerInterface
  • SeekableIterator
  • Serializable
  • Traversable

Traits

  • Psr\Log\LoggerTrait

Exceptions

  • Exception
  • InvalidArgumentException
  • Kotchasan\ApiException
  • Kotchasan\Cache\Exception
  • Kotchasan\Database\Exception
  • Kotchasan\InputItemException
  • LogicException
  • phpmailerException
  • RuntimeException

Functions

  • createClass
  • debug
  • getClassPath
  • Overview
  • Namespace
  • Class
  • Tree
 1: <?php
 2: /**
 3:  * @filesource Kotchasan/Password.php
 4:  *
 5:  * @copyright 2016 Goragod.com
 6:  * @license http://www.kotchasan.com/license/
 7:  *
 8:  * @see http://www.kotchasan.com/
 9:  */
10: 
11: namespace Kotchasan;
12: 
13: /**
14:  * Password Class
15:  *
16:  * @author Goragod Wiriya <admin@goragod.com>
17:  *
18:  * @since 1.0
19:  */
20: class Password
21: {
22:     /**
23:      * ฟังก์ชั่น ถอดรหัสข้อความ
24:      * คืนค่าข้อความที่ถอดรหัสแล้ว
25:      *
26:      * @assert (Password::encode("ทดสอบภาษาไทย", 12345678), 12345678) [==] "ทดสอบภาษาไทย"
27:      * @assert (Password::encode(1234, 12345678), 12345678) [==] 1234
28:      *
29:      * @param string $string ข้อความที่เข้ารหัสจาก encode()
30:      * @param string $password คีย์สำหรับการเข้ารหัส
31:      *
32:      * @return string
33:      */
34:     public static function decode($string, $password)
35:     {
36:         list($data, $iv) = explode('::', base64_decode($string), 2);
37:         return openssl_decrypt($data, 'aes-256-cbc', $password, 0, $iv);
38:     }
39: 
40:     /**
41:      * ฟังก์ชั่น เข้ารหัสข้อความ
42:      * คืนค่าข้อความที่เข้ารหัสแล้ว
43:      *
44:      * @param string $string ข้อความที่ต้องการเข้ารหัส
45:      * @param string $password คีย์สำหรับการเข้ารหัส
46:      *
47:      * @return string
48:      */
49:     public static function encode($string, $password)
50:     {
51:         $iv = self::uniqid(16);
52:         $encrypted = openssl_encrypt($string, 'aes-256-cbc', $password, 0, $iv);
53:         return base64_encode($encrypted.'::'.$iv);
54:     }
55: 
56:     /**
57:      * สร้าง Sign สำหรับส่งให้ API
58:      *
59:      * @param array $params
60:      * @param string $secret
61:      *
62:      * @return string
63:      */
64:     public static function generateSign($params, $secret)
65:     {
66:         // เรียงลำดับตามคีย์
67:         ksort($params);
68:         // นำข้อมูลมาต่อกัน
69:         $data = '';
70:         foreach ($params as $k => $v) {
71:             $data .= $k.$v;
72:         }
73:         // คืนค่าข้อความเข้ารหัส
74:         return strtoupper(hash_hmac('sha256', $data, $secret));
75:     }
76: 
77:     /**
78:      * สร้าง password แบบสุ่ม
79:      *
80:      * @param int $length ความยาวของ password ที่ต้องการ
81:      *
82:      * @return string
83:      */
84:     public static function uniqid($length = 13)
85:     {
86:         if (function_exists('random_bytes')) {
87:             $token = random_bytes(ceil($length / 2));
88:         } else {
89:             $token = openssl_random_pseudo_bytes(ceil($length / 2));
90:         }
91:         return substr(bin2hex($token), 0, $length);
92: 
93:     }
94: }
95: 
Kotchasan API documentation generated by ApiGen