Oplop is an algorithm to generate website specific passwords based on a master password and a keyword.
It is described here: http://code.google.com/p/oplop/wiki/HowItWorks
There's an online implementation here: https://oplop.appspot.com/
My attempt in Q is 204 200 167 165 139 characters ignoring whitespace:
{d:.Q.A,.Q.a,(n:"0123456789"),"-_";
b:d 2 sv'6 cut(,/)0b vs'(md5 x,y),2#0x00;
i:b in n;j:i?1b;k:(j _i)?0b;
8#$[0=0+/i;"1";8>j;();b j+(!)k],b}
EDIT: I achieved significant character savings by removing some redundant code from my Hex->Base64 conversion.
2012.03.07 - Cut out 2 more characters
2012.03.11 - Removed duplication and got accurate char count
2012.03.20 - Down to 141
Criteria
Candidate functions/implementations should take two strings as arguments and return an 8 character password as defined in the algorithm.
Judging
Code golf so shortest code takes the prize.