ช่วยทีคับ เกี่ยวกับ ฟังชั่น base64_encode,md5

เริ่มโดย banksanti, 27 เมษายน 2010, 04:10:04

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

banksanti

ช่วยทีคับ คือว่าผมอยากจะทำให้ลิงค์เป็น base64_encode  หรือ md5  คับ ช่วยแก้ทีคับ ลิงค์ถึงจะแสดงผลเป็น  base64_encode หรือ md5

ตัวอย่างอ่ะคับ

http://yourdomain.com/link/out.php?url=VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw

function parseurl($url, $text) {
   if(!$url && preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|ed2k|thunder|synacast){1}:\/\/|www\.)[^\[\"']+/i", trim($text), $matches)) {
      $url = $matches[0];
      $length = 65;
      if(strlen($url) > $length) {
         $text = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
      }
      return '<a href="link/out.php?url='.(substr(strtolower($url), 0, 4) == 'www.' ? 'http://'.$url : $url).'" target="_blank">'.$text.'</a>';
   } else {
      $url = substr($url, 1);
      if(substr(strtolower($url), 0, 4) == 'www.') {
         $url = 'http://'.$url;
      }
      return '<a href="link/out.php?url='.$url.'" target="_blank">'.$text.'</a>';
   }
}

ขอบคุณล่วงหน้าคับ
สนใจลงโฆษณากับเว็บที่มี UIP 10,000+ สนใจ PM มาครับ

pigdoll


banksanti

ไม่ใช่แบบนี้คับ คือว่าผมอยากจะให้ฟังก์ชั้นนี้แสดงลิงค์เป็น    base64_encode หรือว่า md5

ปกติมันเป็น 

http://yourdomain.com/link/out.php?url= http://www.thaiseoboard.com

แต่อยากให้เป็นแบบนี้คับ

http://yourdomain.com/link/out.php?url= VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw
สนใจลงโฆษณากับเว็บที่มี UIP 10,000+ สนใจ PM มาครับ

itportal

ใช้ base64_encode กับ base64_decode ในการแปลงค่าตัวแปร url สิครับ
เช่น
เข้ารหัสแบบนี้ $a = base64_encode("http://www.thaiseoboard.com") จะได้ $a = aHR0cDovL3d3dy50aGFpc2VvYm9hcmQuY29t
ส่วนในไฟล์ out.php ก็ถอดรหัส $x = base64_encode($url); ก็จะได้ $x = http://www.thaiseoboard.com
[direct=http://phuketecho.blogspot.com/]ภูเก็ต[/direct] | [direct=http://www.phuketoriginalseafood.com]Phuket Seafood Restaurant[/direct] | [direct=http://www.phuketecho.com]Phuket classifieds[/direct]

gigkokman

เพิ่มเติมครับ ถอดรหัสใช้ base64_decode สงสัยคุณ itportal รีบไปหน่อย
อ้างถึงจาก: itportal ใน 27 เมษายน 2010, 09:57:34
ใช้ base64_encode กับ base64_decode ในการแปลงค่าตัวแปร url สิครับ
เช่น
เข้ารหัสแบบนี้ $a = base64_encode("http://www.thaiseoboard.com") จะได้ $a = aHR0cDovL3d3dy50aGFpc2VvYm9hcmQuY29t
ส่วนในไฟล์ out.php ก็ถอดรหัส $x = base64_decode($url); ก็จะได้ $x = http://www.thaiseoboard.com

ลิขิตฟ้าหรือจะสู้มานะคน

itportal

[direct=http://phuketecho.blogspot.com/]ภูเก็ต[/direct] | [direct=http://www.phuketoriginalseafood.com]Phuket Seafood Restaurant[/direct] | [direct=http://www.phuketecho.com]Phuket classifieds[/direct]

ohmohm

เป็นผมจะทำแบบนี้
$secretcode = 'dfwbdefpergasewkfnw';

function base64urlencode($x) {
  return strtr( base64_encode( md5( $secretcode . $x ) . $x ), '+/=', '-_~');
}

function base64urldecode($x) {
  $op = strtr ( $x , '-_~', '+/=' );
  $op = base64_decode ( $op );
  $op2 = substr( $op, 32 );
  if ( substr ( $op , 0, 32 ) ==  md5( $secretcode . $op2 )  )
  {
    return $op2;
  }
  else
  {
    return null ;
  }
}
คือตอนเข้ารหัส ก็เอา url มาต่อท้าย key ลับ แล้วหา md5 ของมัน แล้วเอามาต่อด้วย url แล้วจึง base 64 encode แล้วแปลงตัวอักษรที่เป็น url ไมใ่ด้ ให้ใช้ตัวที่ใช้ได้

ตอน decode ก็กลับกัน

จริงๆ วิธีนี้ อำพราง url ไมไ่ด้ ( แต่จะทำไปทำไม เพราะสุดท้าย คนดูเว็บ ก็เข้า url นี้อยู่ดี ) แต่มีประโยชน์คือไม่ให้ใครก็ได้สร้าง url ที่เข้ารหัสมาใช้กับเว็บเรา โดยไม่รู้ key ลับ ( และหวังว่า md5 คงหาฟังก์ชันย้อนกลับได้ยาก )

quioxz


NightClub

ถอดได้นะครับ จำได้ว่ามีองค์กรนึง ประสบความสำเร็จในการถอดรหัส md5 โดยใช้เวลาถึง 10 ปี และจะขายรหัสนั้นในหลายล้านดอลล่าเลยครับ

ลองเซริท์ดูครับ
รับจ้างเขียนโปรแกรม PHP งานมืออาชีพ เสร็จตามที่กำหนด ราคาปานกลาง
เหมาะกับผู้ที่รับงานมาแล้วส่งต่อจ๊ะ PM มาเลย

GillBate

else {
      $url = substr($url, 1);
      if(substr(strtolower($url), 0, 4) == 'www.') {
         $url = 'http://'.$url;
        $url = md5($url);
      }
      return '<a href="link/out.php?url='.$url.'" target="_blank">'.$text.'</a>';
   }

quioxz

อ้างถึงจาก: NightClub ใน 17 พฤษภาคม 2010, 03:18:39
ถอดได้นะครับ จำได้ว่ามีองค์กรนึง ประสบความสำเร็จในการถอดรหัส md5 โดยใช้เวลาถึง 10 ปี และจะขายรหัสนั้นในหลายล้านดอลล่าเลยครับ

ลองเซริท์ดูครับ

ไม่ได้ครับ md5 เป็นการเข้ารหัสทางเดียว ไม่สามารถถอดได้นอกจากการ brute force เท่านั้น (และเก็บไว้เป็น rainbow table ก็ว่าไป)

เช่น ง่ายๆเลยนะครับ
สมมติเรามีอัลกอริทึมนึง มีคำสั่งไม่กี่บรรทัด ให้นำค่า ASCII ของตัวอักษรทุกตัว มารวมกันแล้วส่งกลับค่านั้นออกมา
เรามีสตริง LMN เมื่อเอาเข้ารหัส (ตามหลักแล้ว md5 ไม่ใช่การเข้ารหัส แต่เป็นเหมือนกับ checksum มากกว่า สังเกตว่าแต่ละหลักของ md5 มีค่า 0-9 และ A-F ซึ่งเป็นเพียงตัวเลขในฐาน 16 เท่านั้น) แล้ว ค่าที่เราได้คือ 76+77+78 = 231
ซึ่งจากค่า 231 ที่เรามี เราไม่สามารถย้อนกลับไปหาสตริง LMN ได้เลย
เพราะอาจมีสตริงอีกหลายล้านรูปแบบ ที่สามารถให้ค่า 231 ออกมาได้ เช่น KMO
แต่ md5 มีความซับซ้อนมาก และค่าที่ออกมา มีความยาว 128bit สามารถเก็บรูปแบบสตริง(และอื่นๆทุกอย่าง)ได้เป็นล้านๆๆรูปแบบ
โอกาสเจอสตริงที่จะให้ค่าเดิมออกมามีน้อยมาก แต่ถ้าถามว่ามีหรือเปล่า ผมค่อนข้างมั่นใจว่ามี

ohmohm


ball6847

อ้างถึงจาก: ohmohm ใน 16 พฤษภาคม 2010, 01:59:16
เป็นผมจะทำแบบนี้
$secretcode = 'dfwbdefpergasewkfnw';

function base64urlencode($x) {
  return strtr( base64_encode( md5( $secretcode . $x ) . $x ), '+/=', '-_~');
}

function base64urldecode($x) {
  $op = strtr ( $x , '-_~', '+/=' );
  $op = base64_decode ( $op );
  $op2 = substr( $op, 32 );
  if ( substr ( $op , 0, 32 ) ==  md5( $secretcode . $op2 )  )
  {
    return $op2;
  }
  else
  {
    return null ;
  }
}
คือตอนเข้ารหัส ก็เอา url มาต่อท้าย key ลับ แล้วหา md5 ของมัน แล้วเอามาต่อด้วย url แล้วจึง base 64 encode แล้วแปลงตัวอักษรที่เป็น url ไมใ่ด้ ให้ใช้ตัวที่ใช้ได้

ตอน decode ก็กลับกัน

จริงๆ วิธีนี้ อำพราง url ไมไ่ด้ ( แต่จะทำไปทำไม เพราะสุดท้าย คนดูเว็บ ก็เข้า url นี้อยู่ดี ) แต่มีประโยชน์คือไม่ให้ใครก็ได้สร้าง url ที่เข้ารหัสมาใช้กับเว็บเรา โดยไม่รู้ key ลับ ( และหวังว่า md5 คงหาฟังก์ชันย้อนกลับได้ยาก )


โอ้ววว อันนี้ชอบมาก ผมมัวแต่คิดวิธีอำพรางแบบกันคนหัวหมอมา encode แล้วมายืมใช้ ปวดกบาลมาก
ทำแบบมี secrete key ได้ด้วย แหล่มมาก ขอเก็บเลย หุหุ
We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

mean

#13
อ้างถึงจาก: quioxz ใน 17 พฤษภาคม 2010, 15:53:47
อ้างถึงจาก: NightClub ใน 17 พฤษภาคม 2010, 03:18:39
ถอดได้นะครับ จำได้ว่ามีองค์กรนึง ประสบความสำเร็จในการถอดรหัส md5 โดยใช้เวลาถึง 10 ปี และจะขายรหัสนั้นในหลายล้านดอลล่าเลยครับ

ลองเซริท์ดูครับ

ไม่ได้ครับ md5 เป็นการเข้ารหัสทางเดียว ไม่สามารถถอดได้นอกจากการ brute force เท่านั้น (และเก็บไว้เป็น rainbow table ก็ว่าไป)


ผมยืนยันนะครับ มีการศึกษา วิจัยแล้วถอดได้แ้ล้วจริงๆ ครับ เพื่อนที่รู้จักกันได้ไปศึกษา bytecode ที่แล๊ป ทางอาจารย์เขาได้เล่าเกี่ยวกับการถอด md5 ออกมาจริงๆ ครับ
แต่ไม่ได้มีการเปิดเผยวิธีการประการใด การศึกษาเพื่อศึกษาวิจัย ความปลอดภัย ในการเข้ารหัสครับ

ส่วน เจ้าของกระทู้ลองหา function php encode decode string ดูนะครับ

เผื่อมีประโยชน์ครับ
http://www.ireallyhost.com/forums.php?p=topic&tid=251&cat=3

ต้องขออภัยครับ code ผม copy ใส่ notepad ไว้นานแล้วโพสนานแล้ว เลยจำที่มาไม่ได้ไม่ได้ มีเจตนาไม่ให้เครดิสแต่ประการใดครับ


[direct=https://www.ireallyhost.com/]บริการโดเมน, เว็บโฮสติ้ง, SSL Certificate[/direct]
[direct=https://www.ireallyhost.com/ssl]บริการ SSL Certificate , HTTPS สำหรับเว็บไซต์[/direct]
[direct=https://www.ireallyhost.com/]บริการ Web Hosting Free! Domain name ตลอดอายุบริการ [/direct]
[direct=https://www.ireallyhost.com/domain]บริการ จดโดเมน, Free DNS Service, Domain Forwarding, จัดการโดเมนได้เอง Domain Control Panel[/direct

quioxz

อ้างถึงจาก: mean ใน 19 พฤษภาคม 2010, 01:39:21
อ้างถึงจาก: quioxz ใน 17 พฤษภาคม 2010, 15:53:47
อ้างถึงจาก: NightClub ใน 17 พฤษภาคม 2010, 03:18:39
ถอดได้นะครับ จำได้ว่ามีองค์กรนึง ประสบความสำเร็จในการถอดรหัส md5 โดยใช้เวลาถึง 10 ปี และจะขายรหัสนั้นในหลายล้านดอลล่าเลยครับ

ลองเซริท์ดูครับ

ไม่ได้ครับ md5 เป็นการเข้ารหัสทางเดียว ไม่สามารถถอดได้นอกจากการ brute force เท่านั้น (และเก็บไว้เป็น rainbow table ก็ว่าไป)


ผมยืนยันนะครับ มีการศึกษา วิจัยแล้วถอดได้แ้ล้วจริงๆ ครับ เพื่อนที่รู้จักกันได้ไปศึกษา bytecode ที่แล๊ป ทางอาจารย์เขาได้เล่าเกี่ยวกับการถอด md5 ออกมาจริงๆ ครับ
แต่ไม่ได้มีการเปิดเผยวิธีการประการใด การศึกษาเพื่อศึกษาวิจัย ความปลอดภัย ในการเข้ารหัสครับ

ส่วน เจ้าของกระทู้ลองหา function php encode decode string ดูนะครับ

อาจจะเป็นเรื่องการทำรหัสปลอมขึ้นมามากกว่าครับ
อย่างที่ผมบอก มันมีโอกาสที่สตริง 2 อันใดๆ จะให้ค่า md5 ซ้ำกันออกมา
แปลว่า หากเราใช้ md5 ในระบบล๊อกอิน เราสามารถใช้สตริง A หรือ B ก็ได้ในการเข้าระบบ
แต่ว่า หากเป็นการหาสตริงเดิมที่ไว้เข้ารหัสจริงๆ ยังไงก็เป็นไปไม่ได้ครับ
ถ้าสมมติเราเจอสตริง A กับ B ขึ้นมา
เราจะรู้ได้ยังไง คนเข้ารหัสใช้อันไหน จริงไหมครับ
ลองอ่านตัวอย่างที่ผมยกขึ้นมาดู เรามีเลข 231 สามารถหาได้ไหมครับ ว่าจริงๆแล้ว ผมใช้ LMN หรือ KMO ในตอนแรก

benzbenz900

จริงๆแล้วถ้าผมตอบกระทู้เก่าๆ แบบนี้อาจจะเป็นการขุดกระทู้ไปหน่อยนะครับ
แต่เท่าที่ดูโค๊ตแล้วมันมีการ return ค่ากลับมาเป็นลิ้ง url เลย

function parseurl($url, $text) {
   if(!$url && preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|ed2k|thunder|synacast){1}:\/\/|www\.)[^\[\"']+/i", trim($text), $matches)) {
      $url = $matches[0];
      $length = 65;
      if(strlen($url) > $length) {
         $text = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
      }
      return '<a href="link/out.php?url='.(substr(strtolower($url), 0, 4) == 'www.' ? 'http://'.$url : $url).'" target="_blank">'.$text.'</a>';
   } else {
      $url = substr($url, 1);
      if(substr(strtolower($url), 0, 4) == 'www.') {
         $url = 'http://'.$url;
      }
      return '<a href="link/out.php?url='.$url.'" target="_blank">'.$text.'</a>';
   }
}
---------------------------------------------------
ในส่วนนี้ return '<a href="link/out.php?url='.$url.'" target="_blank">'.$text.'</a>';
ถ้าอยากให้มันออกมาในรูปแบบ MD5 หรือ base64 หรือ SHA1 เราก็แค่เปลี่ยนตรงที่เป็นสีนำเงินนิดเดียวเองนะครับ
return '<a href="link/out.php?url='.base64_encode("$url").'" target="_blank">
ก็น่าจะได้แล้วนะครับเวลามันส่งค่าไปที่ไฟล์ out.php ก็ใช้ base64_decode ถอดมันออกมา และใช้ meta tag refresh นับถอยหลังเอาก็น่าจะใช้งานได้ดีเลยนะครับ
<meta http-equiv="refresh" content="5; url=<?php echo base64_decode("$_get["url"]");?>">
---------------------------------------------------
หรือหากเป็น MD5 หรือ SHA1 ก็ต้องส่งค่า Url เดิมที่ได้ได้ encode ไปด้วย
หรือไม่ก็นำค่า Url เดิมไปเก็บในฐานข้อมูลก็แล้วดึงออกมาเป็น ID แล้วส่งไปก็ Url อีกที
จากนั้นก็ไปดึง ID นั้นออกมาจากฐานข้อมูล เพื่อให้ได้ Url เดิมแล้วนำไปเทียบกับ MD5 หรือ SHA1 อีกที หากตรงก็ให้มันใช้ url นั้นส่งไปที่ meta tag refresh
หรือไม่ต้องเทียบอะไรเลยก็ได้ ส่งค่าที่ดึงจาก ID ไปยัง meta tag refresh เลยก็ได้

หากการตอบกระทู้นี้ไปรบกวนใครหลายๆคนที่ชอบว่า
"กระทู้ก็ตั้งแต่ปี 2010 แล้ว เค้าคงหาคำตอบได้แล้วนี้มันปี 2014 แล้วนะ"
ผมก็แค่หวังดี เผื่อคนที่ ผ่านมาจากปี 2015 2016 หรืออื่นๆมาเห็น ก็จะได้หาคำตอบจากกระทู้เหล่านี้ได้นะครับ
VPS เร็วแรงรับค่าได้เป็นแสนๆ Stat จาก VPS 1 ลูก (https://goo.gl/uyeC9f) สั่งชื้อ https://www.lnwphp.in.th/ ดูผลงานต่างๆบางส่วน (https://goo.gl/YT8BKy)

korakotz

wordpress ก็เข้ารหัส password admin เป็น md5 ไม่ใช้หรอครับ แล้วมันเอาไปตรวจสอบอย่างไง หรือมีนเอาไปทั้ง md5 ไม่ต้องถอดรหัส


สงสัยเฉยๆ  :wanwan044:

benzbenz900

อ้างถึงจาก: korakotz ใน 18 มีนาคม 2014, 09:43:24
wordpress ก็เข้ารหัส password admin เป็น md5 ไม่ใช้หรอครับ แล้วมันเอาไปตรวจสอบอย่างไง หรือมีนเอาไปทั้ง md5 ไม่ต้องถอดรหัส

สงสัยเฉยๆ  :wanwan044:

การเข้ารหัสแบบนี้จะเป็นแบบทางเดี่ยวครับ เข้าแล้วถอดไม่ได้
แต่สามารถเทียบรหัสได้ครับ
คือเอา คำก่อนเข้ารหัส มาเทียบกับ หลังเข้ารหัส
เช่นคำว่า admin แปลงเป็น MD5 ก็จะได้ 21232f297a57a5a743894a0e4a801fc3
แล้วมันจะเก็บ 21232f297a57a5a743894a0e4a801fc3 ไปไว้ในฐานข้อมูล
จากนั้นเมื่อเราจะ login เข้าระบบด้วยชื่อ user
เราก็จะกรอกรหัสไปว่า admin
ระบบมันจะนำคำว่า admin มาแปลงเป็น md5 แล้วนำไปเทียบกับ md5 ที่เก็บไว้ในฐานข้อมูลอีกทีก็คือ 21232f297a57a5a743894a0e4a801fc3
หากคำที่นำไปแปลงนั้นตรงกับที่เก็บในฐานข้อมูลมันก็จะให้ผ่านเข้าไปใช้งานนะครับ
VPS เร็วแรงรับค่าได้เป็นแสนๆ Stat จาก VPS 1 ลูก (https://goo.gl/uyeC9f) สั่งชื้อ https://www.lnwphp.in.th/ ดูผลงานต่างๆบางส่วน (https://goo.gl/YT8BKy)