¹ØÓÚAESËã·¨ JAVAͬC++»¥½â£¨AES£©
¹ØÓÚ¼Ó½âÃÜJAVAÒ»°ãʹÓõÄJCE£¬¹ØÓÚC++¿ÉÒÔʵÏÖAES¼Ó½âÃܵĿªÔ´ÏîÄ¿¾Í¶àµÄÊý²»Ê¤ÊýµÄ¡£
ÀíÂÛÉÏÉÏËã·¨Ò»Ñù£¬¶Ô³ÆÃÜÔ¿Ò»Ñù¾ÍÄܹ»»¥Ïàʶ±ðÁË¡£
ÏàÐźܶàÈË¿ªÊ¼Ïë·¨¶¼Í¬ÎÒÒ»Ñù£¬Æð³õÎÒJAVAÓÃJCE£¬C++ʹÓÃopenssl¡£
½á¹û·¢ÏÖ¼ÓÃܳöµÄÃÜÎÄÍêÈ«²»Ïàͬ¡£
³öÏÖÎÊÌâ¾ÍÒª½â¾ö
Á˽âÁËÒ»ÏÂJCE£º
JCEÖÐAESÖ§³ÖÎåÖÐģʽ£ºCBC£¬CFB£¬ECB£¬OFB£¬PCBC£»Ö§³ÖÈýÖÖÌî³ä£ºNoPadding£¬PKCS5Padding£¬ISO10126Padding¡£²»Ö§³ÖSSL3Padding¡£²»Ö§³Ö“NONE”ģʽ¡£
ºÃÔÀ´ÓÐģʽºÍÌî³äһ˵¡£
ÔÚOPENSSLÖÐÖ±½ÓÓÐÒ»¸öCBC¼Ó½âÃܺ¯Êý¡£Ìî³äûÕÒµ½£¬ÊÔ¹ýºó·¢ÏÖC++¼ÓÃܳöµÄÄÚÈݱÈJAVAµÄÒª³¤³öÒ»½Ø£¬Ç°ÃæµÄÄÚÈÝÊÇÍêȫһÑùµÄ¡£
ÕâÓ¦¸Ã¾Í³öÏÖÔÚÌî³äÉÏ¡£
±¾À´ÒÔΪÕÒµ½ÎÊÌâ¹Ø¼ü¾ÍÓ¦¸ÃºÜÈÝÒ×½â¾öµÄ¡£½á¹û·¢ÏÖOPENSSLµÄÌî³äÊǹ̶¨ÊµÏֵ쬶øÎÒËùÐèÒª½âÃܵÄjava¶Ë´úÂë²»Äܸ͝¡£
Ò»Ìõ·×ß²»Í¨Ô۾ͻ»Ìõ·¡£×îºó·¢ÏÖÓÐÒ»¸ö¿ªÔ´ÏîÄ¿Botanʲô¶¼ÓжøÇÒͬJCEÊ®·ÖÏàËÆ²¢ÇÒÂú×ãÎÒÒªÇó¿åƽ̨£¬ºÃ¾ÍÊÇËüÁË¡£
¸½£º
Ëã·¨/ģʽ/Ìî³ä 16×Ö½Ú¼ÓÃܺóÊý¾Ý³¤¶È ²»Âú16×Ö½Ú¼ÓÃܺ󳤶È
AES/CBC/NoPadding 16 ²»Ö§³Ö
AES/CBC/PKCS5Padding 32 16
AES/CBC/ISO10126Padding 32 16
AES/CFB/NoPadding 16 &
Ïà¹ØÎĵµ£º
¡¡¡¡ÔõôÈóÌÐòÀûÓÃËÑË÷ÒýÇæÀ´ËѼ¯ÍøÖ·£¬ÕâÓÐʲôÓÃ?ºÜÓÐÓÃ!ÍøÉ϶¯éüÓÐÈ˽ÐÂôÍøÖ·Êý¾Ý¿â£¬Èç·¢²¼Èí¼þÍøÖ·¡¢ÓʼþµØÖ·¡¢ÂÛÌ³ÍøÖ·¡¢ÐÐÒµÍøÖ·£¬ÕâÐ©ÍøÖ·ÊÇÔõôÀ´µÄÄØ?²»¿ÉÄÜÊÇÈËÊÖ¹¤ÊÕ¼¯¶øÀ´µÄ£¬¶¼ÊÇÈóÌÐòÀûÓÃËÑË÷ÒýÇæÈ¡µ½µÄ£¬Èç¹ûÄúÐèҪijÀàÍøÖ·ÐÅÏ¢Êý¾Ý£¬¾Í¸ú³É¶¼ÀÊÎÖ½ÌÓýÀ´Ò»ÆðÑо¿Ò»Ï£¬·Ç³£¼òµ¥¡£
¡¡¡¡±¾ÎIJÉÓÃJavaÓïÑÔÐ ......
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.logging.Logger; ......
1. byte Èç¹ûûÓи³Öµ£¬ÄÇôjava»á×Ô¶¯½«Ëü¸³ÖµÎª £¨byte£©0;
static String ReadLn (int maxLg) // utility function to read from stdin
{
byte lin[] = new byte [maxLg];
int lg = 0, car = -1;
String line = "";
try
{
while (lg < maxLg)
......