php生成uuid格式字符串实例程序

 更新时间:2016年11月25日 15:22  点击:1523
uuid是什么格式的字符串我想很多朋友不知道,但是你己经来了估计就清楚什么是uuid了,下面我们一起来看看如何生成uuid字符串吧。

UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成UUID的API。UUID按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。
在ColdFusion中可以用CreateUUID()函数很简单的生成UUID,其格式为:xxxxxxxx-xxxx-xxxx- xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12)

 代码如下 复制代码

<?php
function guid(){
    if (function_exists('com_create_guid')){
        return com_create_guid();
    }else{
        mt_srand((double)microtime()*10000);
//optional for php 4.2.0 and up.
        $charid = strtoupper(md5(uniqid(rand(), true)));
        $hyphen = chr(45);
// "-"
        $uuid = chr(123)
// "{"
                .substr($charid, 0, 8).$hyphen
                .substr($charid, 8, 4).$hyphen
                .substr($charid,12, 4).$hyphen
                .substr($charid,16, 4).$hyphen
                .substr($charid,20,12)
                .chr(125);
// "}"
        return $uuid;
    }
}
?>

文章给大家介绍基于openssl使用DSA算法生成签名实例,生成签名方法很简单,我们需要懂得中间的原理就比较复杂了,大家一起来看看吧。

命令:

openssl> dgst -dss1 -sign C.pri -out signature.bin s.txt

解释
C.pri是DSA算法生成的私钥文件
s.txt是制作签名的原文
signature.bin是生成的签名文件

php中可以使用下面的方法察看签名内容

 代码如下 复制代码
<?php
echo bin2hex(file_get_contents('signature.bin'));
?>

参考内容
消息摘要算法
支持的算法包括:MD2, MD4, MD5, MDC2, SHA1(有时候叫做DSS1), RIPEMD-160。SHA1和RIPEMD-160产生160位哈西值,其他的产生128位。除非出于兼容性考虑,否则推荐使用SHA1或者RIPEMD-160。
除了RIPEMD-160需要用rmd160命令外,其他的算法都可用dgst命令来执行。
OpenSSL对于SHA1的处理有点奇怪,有时候必须把它称作DSS1来引用。
消息摘要算法除了可计算哈西值,还可用于签名和验证签名。签名的时候,对于DSA生成的私匙必须要和DSS1(即SHA1)搭配。而对于RSA生成的私匙,任何消息摘要算法都可使用。

# 消息摘要算法应用例子
# 用SHA1算法计算文件file.txt的哈西值,输出到stdout
$ openssl dgst -sha1 file.txt
# 用SHA1算法计算文件file.txt的哈西值,输出到文件digest.txt
$ openssl sha1 -out digest.txt file.txt
# 用DSS1(SHA1)算法为文件file.txt签名,输出到文件dsasign.bin
# 签名的private key必须为DSA算法产生的,保存在文件dsakey.pem中
$ openssl dgst -dss1 -sign dsakey.pem -out dsasign.bin file.txt
# 用dss1算法验证file.txt的数字签名dsasign.bin,
# 验证的private key为DSA算法产生的文件dsakey.pem
$ openssl dgst -dss1 -prverify dsakey.pem -signature dsasign.bin file.txt
# 用sha1算法为文件file.txt签名,输出到文件rsasign.bin
# 签名的private key为RSA算法产生的文件rsaprivate.pem
$ openssl sha1 -sign rsaprivate.pem -out rsasign.bin file.txt
# 用sha1算法验证file.txt的数字签名rsasign.bin,
# 验证的public key为RSA算法生成的rsapublic.pem
$ openssl sha1 -verify rsapublic.pem -signature rsasign.bin file.txt

内容过滤多是为了防止一些安全注入或者是跨域操作了,下面我们一起来看看我整理的几个简单的防注入内容过滤程序代码,希望文章对各位同学会有所帮助。

方法一,过滤一些没用的内容

过滤没用的信息比较严格,有用的可能也输入不进去,可以从网上找找其他的过滤方法:

 代码如下 复制代码

function checkHtml($data){
  $ret  = preg_match("/['.,:;*?~`!@#$%^&+=)(<>{}]|]|[|/|\|"||/",$data);
  if ($ret == 1) {
    return false; exit;
  } else {
    return true;
  }
}

例2 过滤一些html标签了

 代码如下 复制代码


function uh($str)
{
$farr = array(
"/s+/", //过滤多余的空白
"/<(/?)(scripti?framestylehtmlbodytitlelinkmeta?%)([^>]*?)>/isU", //过滤 <script 等可能引入恶意内容或恶意改变显示布局的代码,如果不需要插入flash等,还可以加入<object的过滤
"/(<[^>]*)on[a-zA-Z]+s*=([^>]*>)/isU", //过滤javascript的on事件
);
$tarr = array(
" ",
"<\1\2\3>", //如果要直接清除不安全的标签,这里可以留空
"\1\2",
);
$str = preg_replace( $farr,$tarr,$str);
return $str;
}

方法三,上面两种方法都是把要过滤内容放在了程序中,下面我把要过滤的内容放到一个txt文本只,第次只要读文件内容进行判断即可,这样方便维护要过滤的内容。

 代码如下 复制代码

<?php
if($_POST)
{
 //获取文件内容转为数组两种方法:
 /*
 $fcon = file_get_contents("./filter.txt");
 $filter_word = explode("n",$fcon);
 */
 $filter_word = file("./filter.txt");
 //$filter_word = array("test1","test2","test3","test4");
 $str = $_POST["mess"];
 for($i=0;$i<count($filter_word);$i++)
 {
  if(preg_match("/".(trim($filter_word[$i]))."/i",$str))
  {
   echo "<script>alert('您输入的内容含非法内容,请重输!');</script>";
   echo "<a href='index.php'>返回</a>";
   exit;
  }
 }
 echo "您输入的内容是:".$str;
}
?>
<h2>测试过滤是否生效:</h2>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p><textarea name="mess" cols="40" rows="4"></textarea></p>
<p><input type="submit" name="sub" value="send"></p>
</form>

php生成一个随机的密码,方便快捷,可以随机生成安全可靠的密码,希望此文章对大家会有所帮助。

 代码如下 复制代码

<?php

header("Content-type:text/html;charset=utf-8");

function getRandPass($length = 6){

 $password = '';

 //将你想要的字符添加到下面字符串中,默认是数字0-9和26个英文字母

 $chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

 $char_len = strlen($chars);

 for($i=0;$i<$length;$i++){

  $loop = mt_rand(0, ($char_len-1));

  //将这个字符串当作一个数组,随机取出一个字符,并循环拼接成你需要的位数

  $password .= $chars[$loop];

 }

 return $password;

}

echo getRandPass(12); //随机生成一个12位数的密码

 


?>

生成密码哪下

php快速生成一个随机的密码

例2,与第一个有一点像

1、预置一个的字符串 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字符
2、在 $chars 字符串中随机取一个字符
3、重复第二步 n 次,可得长度为 n 的密码

 代码如下 复制代码

function generate_password( $length = 8 ) {
    // 密码字符集,可任意添加你需要的字符
    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|';

    $password = '';
    for ( $i = 0; $i < $length; $i++ )
    {
        // 这里提供两种字符获取方式
        // 第一种是使用 substr 截取$chars中的任意一位字符;
        // 第二种是取字符数组 $chars 的任意元素
        // $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
        $password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
    }

    return $password;
}

在网站中表单提交或url获取值我们都可能碰到一些安全问题,下面我总结了一些常用的过滤一些危险特殊字符的解决方法,希望此教程对各位有帮助。

一般,对于传进来的字符,php可以用addslashes函数处理一遍(要get_magic_quotes_gpc()为假才处理,不然就重复转义了!),这样就能达到一定程度的安全要求
比如这样

 代码如下 复制代码

if (!get_magic_quotes_gpc()) {    
     add_slashes($_GET);    
     add_slashes($_POST);    
     add_slashes($_COOKIE);    
}    
    
function add_slashes($string) {    
     if (is_array($string)) {    
         foreach ($string as $key => $value) {    
             $string[$key] = add_slashes($value);    
         }    
     } else {    
         $string = addslashes($string);    
     }    
     return $string;    
}

但是还可以更进一步进行重新编码,解码,如下:

 代码如下 复制代码

//编码

function htmlencode($str) {     
      if(empty($str)) return;
      if($str=="") return $str;      
      $str=trim($str);
      $str=str_replace("&amp;","&amp;amp;",$str);
      $str=str_replace("&gt;","&amp;gt;",$str);
      $str=str_replace("&lt;","&amp;lt;",$str);
      $str=str_replace(chr(32),"&amp;nbsp;",$str);
      $str=str_replace(chr(9),"&amp;nbsp;",$str);
      $str=str_replace(chr(34),"&amp;",$str);
      $str=str_replace(chr(39),"&amp;#39;",$str);
      $str=str_replace(chr(13),"&lt;br /&gt;",$str);
      $str=str_replace("'","''",$str);
      $str=str_replace("select","sel&amp;#101;ct",$str);
      $str=str_replace("join","jo&amp;#105;n",$str);
      $str=str_replace("union","un&amp;#105;on",$str);
      $str=str_replace("where","wh&amp;#101;re",$str);
      $str=str_replace("insert","ins&amp;#101;rt",$str);
      $str=str_replace("delete","del&amp;#101;te",$str);
      $str=str_replace("update","up&amp;#100;ate",$str);
      $str=str_replace("like","lik&amp;#101;",$str);
      $str=str_replace("drop","dro&amp;#112;",$str);
      $str=str_replace("create","cr&amp;#101;ate",$str);
      $str=str_replace("modify","mod&amp;#105;fy",$str);
      $str=str_replace("rename","ren&amp;#097;me",$str);
      $str=str_replace("alter","alt&amp;#101;r",$str);
      $str=str_replace("cast","ca&amp;#115;",$str);      
      return $str; 
}

这样就能更放心的对外来数据进行入库处理了, 但是从数据库取出来,在前台显示的时候,必须重新解码一下:

 代码如下 复制代码

//解码

function htmldecode($str) {     
      if(empty($str)) return;
      if($str=="")  return $str;
      $str=str_replace("sel&amp;#101;ct","select",$str);
      $str=str_replace("jo&amp;#105;n","join",$str);
      $str=str_replace("un&amp;#105;on","union",$str);
      $str=str_replace("wh&amp;#101;re","where",$str);
      $str=str_replace("ins&amp;#101;rt","insert",$str);
      $str=str_replace("del&amp;#101;te","delete",$str);
      $str=str_replace("up&amp;#100;ate","update",$str);
      $str=str_replace("lik&amp;#101;","like",$str);
      $str=str_replace("dro&amp;#112;","drop",$str);
      $str=str_replace("cr&amp;#101;ate","create",$str);
      $str=str_replace("mod&amp;#105;fy","modify",$str);
      $str=str_replace("ren&amp;#097;me","rename",$str);
      $str=str_replace("alt&amp;#101;r","alter",$str);
      $str=str_replace("ca&amp;#115;","cast",$str);
      $str=str_replace("&amp;amp;","&amp;",$str);
      $str=str_replace("&amp;gt;","&gt;",$str);
      $str=str_replace("&amp;lt;","&lt;",$str);
      $str=str_replace("&amp;nbsp;",chr(32),$str);
      $str=str_replace("&amp;nbsp;",chr(9),$str);
      $str=str_replace("&amp;",chr(34),$str);
      $str=str_replace("&amp;#39;",chr(39),$str);
      $str=str_replace("&lt;br /&gt;",chr(13),$str);
      $str=str_replace("''","'",$str);      
      return $str;
}

虽然多了一步编码,解码的过程,但是安全方面,会更进一步,要如何做,自己取舍吧。

再附一些

 代码如下 复制代码

function safe_replace($string) {
 $string = str_replace(' ','',$string);
 $string = str_replace(''','',$string);
 $string = str_replace(''','',$string);
 $string = str_replace('*','',$string);
 $string = str_replace('"','"',$string);
 $string = str_replace("'",'',$string);
 $string = str_replace('"','',$string);
 $string = str_replace(';','',$string);
 $string = str_replace('<','<',$string);
 $string = str_replace('>','>',$string);
 $string = str_replace("{",'',$string);
 $string = str_replace('}','',$string);
 return $string;
}

更全面的

 代码如下 复制代码

//处理提交的数据
function htmldecode($str) {
 if (empty ( $str ) || "" == $str) {
 return "";
 }
 
 $str = strip_tags ( $str );
 $str = htmlspecialchars ( $str );
 $str = nl2br ( $str );
 $str = str_replace ( "?", "", $str );
 $str = str_replace ( "*", "", $str );
 $str = str_replace ( "!", "", $str );
 $str = str_replace ( "~", "", $str );
 $str = str_replace ( "$", "", $str );
 $str = str_replace ( "%", "", $str );
 $str = str_replace ( "^", "", $str );
 $str = str_replace ( "^", "", $str );
 $str = str_replace ( "select", "", $str );
 $str = str_replace ( "join", "", $str );
 $str = str_replace ( "union", "", $str );
 $str = str_replace ( "where", "", $str );
 $str = str_replace ( "insert", "", $str );
 $str = str_replace ( "delete", "", $str );
 $str = str_replace ( "update", "", $str );
 $str = str_replace ( "like", "", $str );
 $str = str_replace ( "drop", "", $str );
 $str = str_replace ( "create", "", $str );
 $str = str_replace ( "modify", "", $str );
 $str = str_replace ( "rename", "", $str );
 $str = str_replace ( "alter", "", $str );
 $str = str_replace ( "cast", "", $str );
 
 $farr = array ("//s+/", //过滤多余的空白
"/<(//?)(img|script|i?frame|style|html|body|title|link|meta|/?|/%)([^>]*?)>/isU", //过滤 <script 防止引入恶意内容或恶意代码,如果不需要插入flash等,还可以加入<object的过滤
"/(<[^>]*)on[a-zA-Z]+/s*=([^>]*>)/isU" )//过滤javascript的on事件
;
 $tarr = array (" ", "", //如果要直接清除不安全的标签,这里可以留空
"" );
 return $str;
}

[!--infotagslink--]

相关文章

  • C#中截取字符串的的基本方法详解

    这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
  • c#中判断字符串是不是数字或字母的方法

    这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
  • PostgreSQL判断字符串是否包含目标字符串的多种方法

    这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
  • 详解C++ string常用截取字符串方法

    这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • php字符串按照单词逐个进行反转的方法

    本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
  • 运行vbs脚本报错无效字符、中文乱码的解决方法(编码问题)

    今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
  • 使用list stream: 任意对象List拼接字符串

    这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
  • MySQL 字符串拆分操作(含分隔符的字符串截取)

    这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
  • C# 16 进制字符串转 int的方法

    这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 获取中文字符串的实际长度代码

    JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07
  • php二维码生成

    本文介绍两种使用 php 生成二维码的方法。 (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param strin...2015-10-21
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • C#实现字符串转换成字节数组的简单实现方法

    这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
  • php 中英文混合字符串截取

    文章介绍一个实用的函数,我们如果用php substr来截取字符在中文上处理的很有问题,今天自己写了一个比较好的中文与英文字符截取的函数,有需要的朋友可以参考下。 ...2016-11-25
  • C#实现对字符串进行大小写切换的方法

    这篇文章主要介绍了C#实现对字符串进行大小写切换的方法,涉及C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • PostgreSQL 字符串处理与日期处理操作

    这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
  • C#生成随机数功能示例

    这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • c#将字节数组转成易读的字符串的实现

    这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • C#获取字符串后几位数的方法

    这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • C#判断一个字符串是否是数字或者含有某个数字的方法

    这篇文章主要介绍了C#判断一个字符串是否是数字或者含有某个数字的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25